当前位置:首页 > 编程教程 > mysql技术文章 > 浅谈选择mysql存储引擎的标准

详解mysql存储引擎的标准

  • 发布时间:
  • 作者:码农之家
  • 点击:151

这篇文章主要知识点是关于mysql、存储引擎、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

MySQL王者晋级之路
MySQL王者晋级之路高质量扫描版
  • 类型:MySQL数据库大小:76.5 MB格式:PDF作者:张甦
立即下载

浅谈选择mysql存储引擎的标准

主要存储引擎的介绍

1、InnoDB存储引擎

InnoDB是MySQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。
建议使用MySQL5.5及以后的版本,因为这个版本及以后的版本的InnoDB引擎性能更好。
MySQL4.1以后的版本中,InnoDB可以将每个表的数据和索引存放在单独的文件中。这样在复制备份崩溃恢复等操作中有明显优势。可以通过在my.cnf中增加innodb_file_per_table来开启这个功能。如下:
 
InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别。其默认级别是REPEATABLE READ(可重复读),并且通过间隙锁(next-key locking)策略防止幻读的出现。(事务和事务隔离级别是另一个大题目,各自网补吧)。
 
InnoDB是基于聚簇索引建立的,聚簇索引对主键查询有很高的性能。不过它的二级索引(secondary index,非主键索引)中必须包含主键列,所以如果主键列很大的话,其他的所有索引都会很大。因此表上的索引较多的话,主键应当尽可能的小。
 
InnoDB的存储格式是平台独立的,可以将数据和索引文件从Intel平台复制到Sun SPARC平台或其他平台。
 
InnoDB通过一些机制和工具支持真正的热备份,MySQL的其他存储引擎不支持热备份。
 

2、MyISAM存储引擎

MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和行级锁,有一个毫无疑问的缺陷就是崩溃后无法安全恢复。
 
MyISAM会将表存储在两个文件在中:数据文件和索引文件,分别是.MYD和.MYI为扩展名。
在MySQL5.0以前,只能处理4G的数据,5.0中可以处理256T的数据。
 
在数据不再进行修改操作时,可以对MyISAM表进行压缩,压缩后可以提高读能力,原因是减少了磁盘I/O。
 

3、Archive引擎

Archive存储引擎只支持INSERT和SELECT操作,在MySQL5.1之前不支持索引。
Archive表适合日志和数据采集类应用。
Archive引擎支持行级锁和专用的缓存区,所以可以实现高并发的插入,但它不是一个事物型的引擎,而是一个针对高速插入和压缩做了优化的简单引擎。

 

几个常用存储引擎的特点

下面我们重点介绍几种常用的存储引擎并对比各个存储引擎之间的区别和推荐使用方式。

浅谈选择mysql存储引擎的标准

常使用的2种存储引擎:
Myisam是Mysql的默认存储引擎。当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD (MYData,存储数据)、.MYI (MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。  
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

 

如何选择合适的存储引擎

选择标准:根据应用特点选择合适的存储引擎,对于复杂的应用系统可以根据实际情况选择多种存储引擎进行组合。

下面是常用存储引擎的适用环境:
MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一
InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。
Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。
Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。

以上就是本文的全部内容,希望大家能够喜欢。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

您可能感兴趣的文章:

  • MySql跨表查询的方法汇总
  • mysql delete limit 简单用法
  • 如何开启MySQL慢查询
  • mysql压缩包版安装配置方法图文示例详解
  • MySQL slow_log表无法修改成innodb引擎解决办法
  • mysql 相关电子书
    学习笔记
    网友NO.889057

    MySQL存储结构用法案例分析

    本文实例讲述了MySQL存储结构用法。分享给大家供大家参考,具体如下: 前言 今天公司老大让我做一个MySQL的调研工作,是关于MySQL的存储结构的使用。这里我会通过3个例子来介绍一下MySQL中存储结构的使用过程,以及一些需要注意的点。 笔者环境 系统:Windows 7 MySQL:MySQL 5.0.96 准备工作 1.新建两张数据表:student1, student2 新建student1 DROP TABLE IF EXISTS student1;CREATE TABLE student1 (id INT NOT NULL auto_increment,name TEXT,age INT,PRIMARY KEY(id)); 新建student2 DROP TABLE IF EXISTS student2;CREATE TABLE student2 (id INT NOT NULL auto_increment,name TEXT,age INT,PRIMARY KEY(id)); 2.向student1中新增数据 INSERT INTO student1 (name, age) VALUES ('xiaoming', 18);INSERT INTO student1 (name, age) VALUES ('xiaohong', 17);INSERT INTO student1 (name, age) VALUES ('xiaogang', 19);INSERT INTO student1 (name, age) VALUES ('xiaoyu', 18);INSERT INTO student1 (name, age) VALUES ('xiaohua……

    网友NO.136880

    MySQL中InnoDB存储引擎的锁的基本使用教程

    MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-leve locking)或表级锁,默认为页面锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁 各种锁特点 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生冲突的概率最高,并发度最低 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高 页面锁:开销和加锁时间介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般 InnoDB存储引擎的锁 InnoDB存储引擎实现了如下两种锁 1、共享锁(S Lock),允许事务读一行数据 2、排他锁(X Lock),允许事务更新或者删除一行数据 共享锁和排他锁的兼容如下图所示 一致性的非锁定读 一致性的非锁定行读(consistent nonlocking read)是指InnoDB存储引擎通过行多版本控制(multi versioni……

    网友NO.162645

    Mysql存储引擎特性总结

    几个常用存储引擎的特点 下面我们重点介绍几种常用的存储引擎并对比各个存储引擎之间的区别和推荐使用方式。 特点 Myisam BDB Memory InnoDB Archive 存储限制 没有 没有 有 64TB 没有 事务安全 支持 支持 锁机制 表锁 页锁 表锁 行锁 行锁 B树索引 支持 支持 支持 支持 哈希索引 支持 支持 全文索引 支持 集群索引 支持 数据缓存 支持 支持 索引缓存 支持 支持 支持 数据可压缩 支持 支持 空间使用 低 低 N/A 高 非常低 内存使用 低 低 中等 高 低 批量插入的速度 高 高 高 低 非常高 支持外键 支持 最常使用的2种存储引擎: •Myisam是Mysql的默认存储引擎。当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD (MYData,存储数据)、.MYI (MYIndex,存储索引)。数据文……

    <
    1
    >

    Copyright 2018-2020 www.xz577.com 码农之家

    版权投诉 / 书籍推广 / 赞助:520161757@qq.com