MySQL:分支

目前已有的常用分支:

  • MySQL – Oracle
  • MariaDB
  • Percona

常用分支比对:

MySQL(Oracle)PerconaMariaDB
ReplicationMySQL replication with GTIDMySQL replication with GTIDMariaDB Server replication, with own GTID, compatible only if MariaDB Server is a slave to MySQL, not vice versa
PartitioningStandardStandardStandard, with extra engines like SPIDER/CONNECT that offer varying levels of support
MonitoringMySQL Enterprise MonitorPercona Mnitoring & Management(PMM)(100% open source)Webyog’s Monyog
ClustingMySQL Group ReplicationMySQL Group Replication, Percona XtraDB Cluster(based on a further engineered Galera ClusterMariaDB Enterprise Cluster(based on Galera Cluster)
EncryptionTablespace data-at-rest encryption.
Amazon KMS, Oracle Vault Enterprise Edition
Tablespace data-at-rest encryption with Keyring Vault pluginTablespace and table data-at-rest encryption. Amazon KMS, binlog/redo/tmp file with Aria tablespace encryption
FirewallMySQL Enterprise FirewallProxySQL FirewallMariaDB MaxScale Firewall
AuditingMySQL Enterprise Audit PluginPercona Audit Plugin(OSS)MariaDB Audit Plugin(OSS)
AnalyticsNoClickHouseMariaDB ColumnStore
Common Table ExpressionsIn-development for MySQL 8.0(release)In-development for MySQL 8.0(release)Present in MariaDB Server 10.2
window FunctionsIn-development for MySQL 8.0(release) In-development for MySQL 8.0(release) Present in MariaDB Server 10.2

MySQL与MariaDB复制兼容列表:

MasterMariaDB 5.5 MariaDB 10.0 MariaDB 10.1 MariaDB 10.2 MariaDB 10.3MySQL 5.6MySQL 5.7MySQL 8.0
Slave
MariaDB 5.5OKNONONONONONONO
MariaDB 10.0OKOKOK
MariaDB 10.1OKOKOKOK
MariaDB 10.2OKOKOKOKOKOK
MariaDB 10.3OKOKOKOKOKOKOK
MySQL 5.6XXX
MySQL 5.7XXX
MySQL 8.0XXX

分支对比:

  • 社区开放性
    • Percona 与 MariaDB 更适合开发者(内核)
    • MySQL 内部会议一般不对外
  • 扩展性(存储引擎)
    • Percona 与 MariaDB 支持更多的存储引擎(TokuDB、MyRocks)
  • 高可用
    • 每个分支都有高可用产品做代表(MGR/PXC/MGC)
  • 兼容性
    • Percona与MySQL兼容
    • MySQL与MariaDB会越来越不一样

MySQL各个版本的差异

版本差异:MySQL 5.5

  • 默认InnoDB plugin引擎。具有提交、回滚和crash恢复功能、ACID兼容
  • 行级锁(一致性的非锁定读MVCC)
  • 表与索引存储在表空间、表大小无限制
  • 支持dynamic(primary key魂村内存 避免主键查询引起的IO)与compressed(支持数据以及索引压缩)行格式
  • InnoDB plugin文件格式Barracuda、支持表压缩、节约存储、提供内存命中率、truncate table速度更快
  • 原InnoDB只有一个Undo Segment,最多支持1023的并发,现在有128个Segments,支持128K个并发(同样,解决高并发带来的事务回滚)
  • Innodb_thread_concurrency默认为0,线程并发数无限制,可根据具体应用设置最佳值
  • Innodb_io_capacity可以动态调整刷新脏页的数量,改善大批量更新时刷新脏页跟不上导致的性能下降问题;默认200,跟硬盘的IOPS有关
  • 充分利用CPU多核处理能力 innodb_read_io_threads阈值:1-64 innodb_write_io_threads阈值:1-64 根据数据库的读写比灵活设置,充分发挥多CPU高性能存储设备的性能,不支持动态加载
  • buffer pool多实例,innodb_buffer_pool_instances参数可增加innodb_buffer_pool实例的个数,大大降低buffer pool的mutex争抢过热的情况
  • 重新支持组提交
  • 支持半同步replication
  • 增加relay log自我修复功能
  • crash recovery

版本差异:MySQL 5.6

  • 支持全文索引
  • GTID复制
  • 支持online DDL create / alter / drop
  • 可以在建表的时候指定表空间的位置
    • create table external(x int unsigned not null primary key) data directory=’xxxx’;
  • 新增参数innodb_page_size可以设置page大小
  • innodb只读事务,不需要设置TRX_ID字段
  • 减少内部数据结构开销,减少read view
  • innodb表空间在线迁移(transportable tablespace)
  • undo log可独立除系统表空间
  • redo log最大可以增长到512G
  • innodb 后台线程独立出来
  • ICP/BKA/MRR优化器增强
  • 提升子查询效率
  • 统计信息持久化,MySQLD重启后不丢失

版本差异:MySQL 5.7

  • 并行复制
  • 多源复制
  • sys schema
  • 虚拟列
  • buffer pool在线修改
  • 修改了默认的sql_mode
    • sql_mode=ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION
  • 支持JSON
  • 在线支持修改GTID复制模式
  • 默认启用STRICT_TRANS_TABLES模式
  • 调整了一些不合理的默认参数
  • 增加多个purge清理线程

版本差异:MySQL 8.0

  • CTE功能
  • 窗口函数
  • 降序索引
  • DDL原子操作
  • 隐藏索引
  • 系统表改为innodb
  • 参数持久化
  • NOWAIT and SKIP LOCKED

MySQL 升级后需要注意的地方:

  • sql_mode
    • 5.6版本默认时非严格模式,5.7中修改为严格模式会导致之前一些语句不能执行,典型问题是:group by / timestamp类型字段创建表的问题
  • log_timestamps
    • 设置log_timestamps=system,这样错误日志中时间是正常的
  • innodb_strict_mode
    • 设置Innodb严格模式,在create table或者alter table的时候不会抛出警告,而是直接报错
  • 升级到8.0字符集的问题
    • 升级到8.0后由于字符集发生了变化,会导致低版本的Java驱动不能使用,需要升级Java驱动
  • show_compatibility_56
    • 5.6中通过show命令获取相关状态变量,由于5.7中相关变量位置发生了变化,要保持5.6中的方式,则需要设置该参数

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装