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

云的事随心讲 2024-02-13 06:44:40
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 存储引擎,可能需要特定的配置和调优。 更多技术信息请查看云掣官网云掣YunChe - 可观测运维专家 | 大数据运维托管 | 云MSP服务
0 阅读:0

云的事随心讲

简介:感谢大家的关注