认识mysql
-
架构图
-
存储引擎(Myisam innodb)
-
无论rdbs还是no-sql 都是存储在文件里
性能
- 影响性能的因素
- 人为因素-需求
-
- count(*) 论坛 实时、准实时、有误差
-
- 程序员因素 – 面向对象
- Cache
- 过度扩展
- 表范式
- 应用场景
- OLTP
- OLAP
- OLTP
提高性能
-
索引
-
索引结构
-
衡量索引 -------IO渐进复杂度
-
联合索引------最左前缀原则
锁
-
行锁
行级锁争用状态变量
show status like 'innodb_row_lock%';
-
表锁
表级锁的争用状态变量
show status like 'table%';
注:只有通过索引条件检索数据,InnoDB才会使用行级锁,否则,InnoDB将使用表锁
-
死锁(Innodb,myisam不会发生死锁)
注:死锁只会发生在行锁上,不同的事务相互等待锁释放。
-
共享锁排它锁
优化
执行计划
- explain select * from table;
- 执行计划中的名次解释:
注:type 依次从好到差:system,const,eq_ref,ref,fulltext,ref_or_null, unique_subquery,index_subquery,range,index_merge,index,ALL
join,order by底层
- join
- order by