作者:俊达
MySQL表的特点
MySQL是一种开源的关系型数据库管理系统,与Oracle、SQL Server等数据库相比,有两个关键的特点:
- 存储引擎灵活性: MySQL的插件式存储引擎使得用户可以根据具体需求选择不同的引擎,即在同一个数据库中的不同表可以使用不同的存储引擎。存储引擎决定了表的物理存储格式,包括数据的组织方式、索引的结构等,表也可以在不同的存储引擎之间转换。而其他一些数据库可能较为固定或仅支持特定的存储引擎。
sql_mode的影响: MySQL的sql_mode参数影响SQL语句的执行方式。它定义了MySQL对SQL语句的解释和执行规则,同一个SQL语句在不同的sql_mode下可能会有不同的执行结果。sql_mode可以控制MySQL的行为。
表的存储引擎
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。
第三方存储引擎
在 MySQL 社区中有一些第三方存储引擎,它们在特定的使用场景下可能具有一些优势:
- TokuDB: 以支持高度压缩为特点,能够在高度压缩数据的同时,快速执行插入和查询操作,一般适用于需要处理大量数据并希望减小存储空间占用的场景。
- LevelDB :基于 LSM Tree (log structured merge tree)结构的存储引擎。能够提供高性能的随机写入,并在后台使用多层次的存储结构进行数据的排序和合并,适用于需要高吞吐量和对写入性能要求较高的场景。
- MyRocks:基于 RocksDB 的 MySQL 存储引擎,同样使用了 LSM Tree (log structured merge tree)结构。它专注于优化写入性能和存储效率,适用于大规模写入的场景。
在实际的应用当中,应该基于需求,结合具体场景来选择最为合适的存储引擎,从而更好的优化数据库性能。值得注意的是,使用第三方存储引擎可能需要谨慎考虑,因为它们可能不同于 MySQL 默认的 InnoDB 存储引擎,可能需要特定的配置和调优。
更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。