Mysql之其他总结
日志类型
数据类型
1.更小的通常更好
能正确存储的最小数据类型,优点是占用磁盘、内存和CPU都少
2.简单就好
3.尽量避免使用null
在数据库中null不等于null
对游湖和索引和值的比较都很复杂
MyISAM和InnoDB存储引擎对比
对比项 | MyISAM | InnoDB |
---|---|---|
主外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行级锁 | 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 | 行锁,操作时只锁一行,不对其他行有影响,适合高并发的操作 |
缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引还要缓存真是数据,对内存要求较高,而且内存大小对性能由决定性的影响 |
表空间 | 小 | 大 |
关注点 | 性能 | 事务 |
默认安装 | 是 | 是 |
存储引擎
Mylsam:
Mylsam索引文件和数据文件是分离的
对应三个文件:frm:存储表结构信息、MYD:存储数据行、MYI:存储索引
使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。
查询一条数据的时候,如果查询条件增加了索引,会先从MYI文件中找到对应行的索引信息,在通过索引中data的磁盘地址值去MYD文件查询数据。
Innodb:
Innodb表数据文件本身就是按B+Tree组织的一个索引结构文件
对应两个文件:frm:存储表结构信息、ibd:存储索引及数据行
该存储引擎会把表数据直接存储到叶子节点的data里
总结:`Innodb的主键索引就是聚集索引,Mylsam是非聚集索引
相关系列文章:
0.Mysql之如何插入数据剖析mysql各个技术点 :通过插入一条数据的过程引出mysql知识点:
1.mysql之事务隔离级别以及MVCC:ACID、事务级别以及产生问题、MVCC(三个隐藏字段、undolog、read_view详解)
2.Mysql之Innodb锁场景:锁分类、RC下各种加锁情况、RR下各种加锁情况
3.Mysql之主从复制原理:主从复制原理、二次提交、MTS、组提交、GTID
4.Mysql之数据结构 :hash、二叉树、AVL、平衡二叉树(红黑树)、B-Tree、B+Tree
5.Mysql之索引 :回表、索引覆盖、索引下推、MRR、FIC、索引方式、哈希索引
6.Mysql之其他知识 :日志、MyiSAM和InnoDB比较,基础知识体系