Mysql 原理
1. 存储引擎
1.1. 选择存储引擎
1.1.1. Mysql 内置的存储引擎
mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)1.1.2. 如何选择合适的存储引擎?
1.1.3. 转换表的存储引擎
1.2. MyISAM
1.3. InnoDB
2. 数据类型
2.1. 整型
2.2. 浮点数
2.3. 字符串
2.4. 时间和日期
2.4.1. DATATIME
2.4.2. TIMESTAMP
3. 事务
3.1. 事务隔离级别
3.2. 死锁
4. MVCC
5. 索引
5.1. 索引的优点和缺点
5.2. 索引类型
5.2.1. 普通索引
5.2.2. 唯一索引
5.2.3. 主键索引
5.2.4. 组合索引
5.2.5. 全文索引
5.3. 索引数据结构
5.3.1. B+Tree 索引
5.3.2. 哈希索引
5.3.3. 全文索引
5.3.4. 空间数据索引(R-Tree)
5.4. 索引原则
5.4.1. 最左前缀匹配原则
5.4.2. = 和 in 可以乱序
5.4.3. 索引列不能参与计算
5.4.4. 尽量的扩展索引,不要新建索引
5.4.5. 多列索引
5.4.6. 前缀索引
5.4.7. 覆盖索引
6. 查询性能优化
6.1. 使用 Explain 进行分析
6.2. 优化数据访问
6.2.1. 减少请求的数据量
6.2.2. 减少服务器端扫描的行数
6.3. 重构查询方式
6.3.1. 切分大查询
6.3.2. 分解大连接查询
7. 复制
7.1. 主从复制
7.2. 读写分离
8. 参考资料
最后更新于