- 关键字查询:https://dev.mysql.com/doc/refman/5.7/en/keywords.html
- 对于一些小的字典表,为了恢复方便,直接在数据库中复制一份(不必导出成sql文件)
- 可以使用关键字创建,但是查询时就会报错,所以还需要使用“括起来。
- 如果两个表上的关联列数据类型不同,关联时就会进行隐式数据类型转换,造成列上的数据类型失效,查询效率降低
Mysql5.5使用之前MyIsam是默认存储引擎
- Innodb无法满足的需求:列存储,空间数据
- UTF-8兼容性更好
- 对不同字符集的比较操作,比较前进行字符集的转换,所以使得列上的索引失效,带来性能问题
- 单表数据量较大,修改表结构,备份,恢复都会有很大的问题
- mysql并没有对单表最多存储设置限制。限制取决于存储设置和文件系统(32位系统单个文件最大不能超过2G)
- 历史数据归档主要用于日志文档(增长迅速),分库分表用于业务上
- 分区表大家误认为存储在不同的物理文件中,可以更好的利用磁盘IO。实际上分区表的不同分区文件最好存储在不同的磁盘阵列上。而我们把所有分区文件放在一起,IO的性能优化的效果并不能那么好
- mysql每个表限制最多存储4096列,并且每一行的数据大小不能超过65535个字节
- 表越宽,把表装入内存缓冲池占用内存也就越大,消耗更多IO
- select * ->读入无用的冷数据
- 垂直拆分
- 对于目前的mysql,修改一个字段的成本远远大于增加一个字段
索引建立经验
建立索引的目的:减少磁盘IO,过滤出更少的数据
索引建立在哪?
如何选择索引列的顺序?
注意合理选择符合索引键值的顺序
区分度:列中唯一值的数量,用列中不同数据的数量和表的总行数的比例(接近于1)来计算,区分度最大的就是主键(1)和唯一索引的列