MySQL 索引使用的注意事项
1、索引的目的:在于提高查询效率,插入和更新的操作,数据库的操作是慢的,但是查询操作会非常快,索引可以对表中一个或多个字段进行加索引动作。
2、索引的类型:
1、唯一索引(unique):不可以出现相同的值,可以有null值
2、普通索引(index):允许出现相同的索引内容
3、主键索引(promary key):不允许出现相同的值
4、全文索引(fulltext index):可以针对值中的某个单词
5、组合索引:将多个字段建到一个索引里,列值的组合必须唯一
3、索引缺点:
1、虽然大大提高了查询速度,但也会降低更新表的速度。
2、建立索引会占用磁盘空间的索引文件
3、mysql一张表查询只能用到一个索引
4、like ‘%aaa%’不会使用索引,而like ‘aaa%’可以使用索引
5、不要在列上进行运算
说说反模式设计
说说分库与分表设计
分库与分表带来的分布式困境与应对之策
服务端指南 数据存储篇 | MySQL(09) 分库与分表带来的分布式困境与应对之策
说说 SQL 优化之道
MySQL 遇到的死锁问题
1、MySql有三级锁:页级、表级、行级
1、页级:开锁和加锁时间临界于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间
2、表锁:开销小,加锁快。不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
3、行锁:开销大、加锁慢。会出现死锁;锁定粒度小,发生锁冲突的概率最小
2、什么情况下会造成死锁
两个或两个以上的进程在执行过程中因争夺资源而造成的一种互相等待的现象。在没有外力的情况下,他们将无法推进下去。因为表级锁不会产生死锁,因此解决死锁主要还是针最常用的InnoDB.