设为首页 收藏本站
查看: 421|回复: 0

[经验分享] MySQL存储引擎

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-4-13 08:49:22 | 显示全部楼层 |阅读模式
目录
1、写在前面
2、mysql内建其他存储引擎
3、第三方存储引擎
4、存储引擎的选择标准

1、写在前面
mysql> SHOW ENGINES; #查看支持的存储引擎
存储引擎是表级别的概念,在创建表时就可指定表的存储引擎。
mysql> SHOW TABLE STATUS LIKE 'tn_name'\G   #显示表状态信息
表状态信息:

Row_format:Dynamic,Fixed,Compressed,Compact
Rows:表中的行行数,采用InnoDB引擎的表是估算值
Avg_row_length:行的平均字节数
Data_length:表的数据量,单位为字节
Max_data_length:表的容量上限,单位为字节
Index_length:索引数据量,单位为字节
Data_free:已分配出去,但未存储数据的存储空间,通常指开始被数据填充,后被删除后腾出的空间
Auto_increment:具有自动属性的字段的下一个增长值
Create_time:表的创建时间
Update_time:数据最近一次的更新时间
Check_time:使用check命令检查表的时间
Collation:排序规则
Checksum:表的校验和
Create_options:创建表时指定的其他选项
Coment:对MyISAM表,存储的是创建表时的comment表选项指定的信息,对InnoDB表来讲,存储对应的表空间信息

2、mysql内建存储引擎

2.1、InnoDB引擎
InoDB特性:
InnoDB引擎是事务型的存储引擎,InnoDB表采用聚簇索引建立,数据与索引存储在一起,按主索引顺序存储为有序文件,通过间隙锁有效防止幻读,支持自适应HASH索引加速读操作,采用MVCC多版本并发控制来支持高并发,实现了四个标准的事务隔离级别,不像MyISAM引擎只支持表级锁,InnoDB表支持行级锁,利用MySQL Enterprise Backup和开源的Percona Xtrabackup工具实现真正的热备份。
采用InnoDB存储引擎的表在文件级别存储的文件:
tb_name.frm:存储表格式
tb_name.ibd:在开启“innodb_file_per_table=ON”后,数据与索引就存储在以此文件中,默认文件的位置存储在frm表存储位置的位置,如果没有开启此变量,那所有的表数据及索引默认都存储在数据目录的“ibdata1”这样的表空间文件中,这是由InnoDB管理的一个黑盒子,由一系列的数据文件组成。

2.2、MyISAM引擎
MyISAM支持全文索引、压缩、空间函数、但不支持行级锁和事务,具有么延迟更新索引键特性,即当指定“DELAY_KEY_WRITE”选项后,每次修改执行完成时,不会立刻将修改的索引数据写入到磁盘,而是先写入内存中的键缓冲区,只有在清理键缓冲区或者关闭表的时候才会将对应的索引块写入到磁盘,可提升写入性能,但在主机崩溃时会造成索引损坏。
缺点:崩溃后不能安全恢复
MyISAM适用场景:数据量较小的表,能够接受手动修复操作
采用MyISAM存储引擎的表在文件级别存储的文件:

tb_name.frm:格式文件
tb_name.MYD:数据文件
tb_name.MYI:索引文件

2.3、ARCHIVE引擎
仅支持INSERT和SELECT,支持很好的压缩功能,支持全表扫描,不支持索引
适用场景:存储日志信息,或按时间序列实现的数据采集运用

2.4、CSV引擎
将数据保存为CSV格式,不支持索引
适用于在不同类型的数据库中交换数据的场景

2.5、BLACKHOLE:
没有存储机制,任何数据都会被丢弃,但是会记录二进制日志
适用于在mysql复制场景作为中继服务器的存储引擎

2.6、Federated引擎
能够访问远程服务器上的数据,类似于代理。在MariaDB中被改进

2.7、Memory引擎:
内存存储引擎,能实现数据的快速查询、修改,支持Hash索引,比MyISAM至少快一个数量级,但也只是支持表级锁,并发写入性能低。适用于需要快速检索数据,通常用于实现临时表。

2.8、MRG引擎
能够把多个MyISAM表合并,本身并不存储数据,但在引入分区功能后,此引擎已被放弃。

2.9、NDB集群引擎
专用于MySQL Cluster集群的存储引擎

3、第三方存储引擎

3.1、OLTP类(On-Line Transaction Processing联机事务处理系统(OLTP)也称为面向交易的处理系统)
XtraDB:InnoDB增强版,对InnoDB引擎做了改进,主要集中在性、可测量性和操作灵活性方面,已经在MariaDB中集成此引擎。
PBXT:社区已不活跃,已不再维护,PBXT 在 MariaDB 的 5.1/5.2/5.3 版本中存在,但从MariaDB 5.5 开始就不再提供 PBXT 存储引擎
TokuDB:是一种大数据存储引擎,存储海量数据有优势,支持分形树索引数据结构,适用于需要大量插入分析型数据的场景

3.2、列式存储引擎(在海量存储时效率会更高)
Infobright:适合数据量在数十TB的场景,不支持压缩
还有InfiniDB、MonetDB、LucidDB这样的列区引擎。

3.3、社区存储引擎
社区存储引擎大多没有或很少在生产环境中使用,这里只是列举一些:
SphinxSE、Aria
Groona:全文索引引擎
QQGraph:支持图,由Open query研发
Spider:支持分片(shard)
VPForMySQL:支持垂直分区

4、存储引擎的选择标准
除非需要用到某些InnoDB不具备条件的特性,并且没有其他办法可以替代,否则都应该优先选择InnoDB引擎。
a)、是否需要事务支持
b)、是否可热备份
c)、崩溃恢复的数据安全
建议:
存储日志型数据,选择MyISAM和ARCHIVE
存储论坛应用,选择InnoDB
订单处理,选择InnoDB


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56500-1-1.html 上篇帖子: MySQL中IN (字符串)查询 下篇帖子: 如何导入外部的frm、MYD、MYI文件到自己的mysql上查看
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表