MySQL --> MariaDB --> Percona-Server
MySQL: oracle ,
commutity : 社区版 5.5 5.6 5.7 8.0
MariaDB:
5.5 10.x
Percona:
Percona-Server
InnoDB --> XtraDB
Xtrabackup
percona-tools:
存储引擎:
引擎:也称为表类型,表级别概念,不建议在同一个库中的表上使用不同的ENGINE;
CREATE TABLE ... ENGINE STORAGE_ENGINE_NAME ...
SHOW TABLE STATUS
常见的存储引擎: SHOW ENGINES;
MyISAM, Aria, InnoDB, MRG_MYISAM, CSV, BLACKHOLE,...
InnoDB : InnoBase
Percona-XtraDB,Supports transactions , row-level locking, and foreign keys
数据存储于“表空间” 中:
(1)所有数据库中的所有类型为InnoDB的表的数据和索引存储于同一个表空间中;
表空间文件:datadir定义的目录中,文件 ibdata1,ibdata2...
(2) innodb_file_per_table=ON,意味着每表使用单独的表空间文件; 每表的数据文件(数据和索引,存储于数据库目录)存储于自己专用的表空间文件中,并存储于数据库目录下:tablename.ibd
表结构的定义:在数据库目录,tablename.frm
事务型存储引擎,适合对事物要求较高的场景中;但较适用于处理大量短期事务;
基于MVCC(Mutil Version Concurrency Control)支持高并发;支持四个隔离级别,默认级别为 REPETABLE-READ(可重读-幻读); 间隙锁以防止幻读:(MVCC多版本控制就是解决了幻读问题)
使用聚集索引(主键索引);支持“自适应Hash索引”;
锁粒度: 行级锁,间隙锁
总结:
数据存储:表空间;
并发:MVCC,间隙锁,行级锁
索引:聚集索引、辅助索引;
性能:预读操作、内存数据缓冲、内存索引缓存、自适应Hash索引、插入操作缓存区;
备份:支持热备;
SHOW ENGINE INNODB STATUS;
MyISAM:-> Aria
支持全文索引(FULLTEXT index)、压缩、空间函数(GIS);
不支持事务
锁粒度:表级锁
崩溃后无法保证表安全恢复
适用场景:只读或读多写少的场景、较小的表(以保证崩溃后恢复的时间较短);
文件:每个表有三个文件,存储于数据库目录中
tbl_name.frm:表格式定义;
tbl_name.MYD:数据文件;
tbl_name.MYI:索引文件;
特性:
加锁和并发:表级锁;
修复:手动或自动修复、但可能会丢失数据;
索引:非聚集索引;
延迟索引更新;
表压缩;
显示锁的使用:
1)LOCK TABLES
LOCK TABLES tb1_name read|write...
UNLOCK TABLES;
2)FLUSH TABLES;
FLUSH TABLES tb1_name,.... [WITH READ LOCK];
UNLOCK TABLES;
3) SELECT cluase
[FOR UPDATE | LOCK IN SHARE MODE]
事务:
事务:一组原子性的SQL查询、或者是一个或多个SQL语句组成的独立工作
单元:
事务日志:
innodb_log_files_in_group
innodb_log_group_home_dir
innodb_log_file_size
innodb_mirrored_log_groups
ACID