MySQL运维实战(4.1) MySQL表存储引擎

俊达2年前技术文章713

MySQL表的特点

和其他数据库如Oracle、SQL Server相比,mysql有一些特点:

  • MySQL使用插件式存储引擎,同一个数据库中的表可以使用不同的存储引擎。存储引擎决定了表的物理存储格式。表可以在不同的存储引擎之间转换。

  • 参数sql_mode。sql_mode会影响sql的执行。同一个sql,在不同的sql_mode下可能会有差异。


表的存储引擎

MySQL支持插件存储引擎。系统默认支持多种存储引擎。同时提供了接口,支持第三方开发存储引擎,以满足特定的数据存储需求。

oracle mysql官方存储引擎

使用show storage engines命令或查询information_schema.engines表查看当前实例支持的存储引擎。

mysql> select engine, support, transactions, xa, savepoints from information_schema.engines;
+--------------------+---------+--------------+------+------------+
| engine             | support | transactions | xa   | savepoints |
+--------------------+---------+--------------+------+------------+
| InnoDB             | DEFAULT | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | NO           | NO   | NO         |
| MEMORY             | YES     | NO           | NO   | NO         |
| BLACKHOLE          | YES     | NO           | NO   | NO         |
| MyISAM             | YES     | NO           | NO   | NO         |
| CSV                | YES     | NO           | NO   | NO         |
| ARCHIVE            | YES     | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | NO           | NO   | NO         |
| FEDERATED          | NO      | NULL         | NULL | NULL       |

各存储引擎特点


存储引擎

特点

InnoDB

  • 支持事物。

  • 支持MVCC多版本。并发读写性能高。

MyISAM

早期版本的默认存储引擎。

  • 不支持事物。

  • mysql实例或所在主机异常crash的情况下,可能会有数据丢失

  • 表容易crash,需要修复。大表修复耗时可能会很长。

  • mysql的一些系统表是myisam存储引擎

  • 索引数据在mysql内部缓存,受参数key_buffer_size控制

  • 数据由OS文件系统的Page Cache缓存。

MRG_MYISAM

本身不存储数据,可以将多个MyISAM表模拟成一个单独的表使用。

方便历史数据清理归档。

Memory

  • 数据存储在内存中,实例重启会清空数据。

  • mysql一些内部表使用了memory引擎。

  • 业务上要避免使用memor存储引擎。

  • 在主备复制架构下,主库或备库重启,容易引起主备复制中断。

  • 每个表可存储的数据受参数max_heap_table_size控制

CSV

  • csv文件格式。

  • 外部csv文件可以通过csv表挂到mysql中,用于数据分析。

  • 不支持索引。

  • mysql slow log可以以csv格式存储,便于数据采集和分析。

Blackhole

不存储数据。

Archive

归档存储。不支持索引。

PERFORMANCE_SCHEMA

mysql系统内部表。

Federated

本身不存储数据。从其他数据库实例获取数据。类似oracle的db link。



绝大部分情况下,建议业务统一使用InnoDB存储引擎。mysql 5.7开始默认存储引擎就是innodb。

第三方存储引擎

社区的一些存储引擎:

TokuDB,数据压缩比高。

LevelDB存储引擎,基于LSM Tree(log structured merge tree)的存储引擎。

MyRocks,RocksDB存储引擎,基于LSM Tree(log structured merge tree)。


相关文章

MySQL运维实战之ProxySQL(9.1)ProxySQL介绍

MySQL运维实战之ProxySQL(9.1)ProxySQL介绍

mysql通过复制技术实现了数据库高层面的可用,但是对于应用来说,当后端MySQL发生高可用切换时,应该怎么处理?我们考虑几种方案:1、使用域名绑定。应用通过dns连接后端实例,当后端发生切换后,将d...

MySQL运维实战之ProxySQL(9.4)proxysql和后端MySQL自动切换

MySQL运维实战之ProxySQL(9.4)proxysql和后端MySQL自动切换

如上图架构,当后端MySQL主库出现问题,发生主备切换后,如何自动将ProxySQL的读写切换到新的主库上?可以通过mysql_replication_hostgroups表配置实现:insert&n...

MySQL运维实战(7.1) 开启GTID复制

MySQL从5.6版本开始支持GTID复制。开启GTID之后,主库上执行的每一个事务都有一个全局唯一的ID。GTID由两部分组成:server_uuid和事务序列号。初始化数据库时,会生成一个全局唯一...

 MySQL优化器特性(九)行数评估

MySQL优化器特性(九)行数评估

查询的行数在成本计算中起了很重要的作用:1、row_evaluate_cost和行数直接相关2、需要访问多少索引页面,和行数直接相关。根据页面大小和平均索引条目长度计算每个索引页面的记录数,根据记录数...

MySQL运维实战(2.3)MySQL的权限体系和一个例子

mysql权限按授权范围分为3大类全局权限。全局权限是用于管理系统模块的权限。跟具体的数据库或对象无关。授权时需要指定为*.*数据库权限对象权限对于具体的数据库对象的权限,如表、字段级别的权限。MyS...

MySQL运维实战之备份和恢复(8.1)xtrabackup全量备份

xtrabackup是percona开源的mysql物理备份工具。xtrabackup 8.0支持mysql 8.0版本的备份和恢复。xtrabackup 2.4支持mysql 5.7及以下版本的备份...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。