mysql

读写锁 也叫排他所和共享锁的特点,读写锁的优先级

锁粒度 锁力度 精确锁定

两个层面管理锁,存储引擎和mysql 服务器

事务的概念和特性,就是一组原子性的sql查询

事务的隔离级别,读未提交,读已提交,可重复读,序列化读

事务是由下层的存储引擎实现

隐式锁定和显式,默认都是隐式

如果需要用到事物还是选择事务性存储引擎

多版本并发控制,两个字段,行创建时间,行删除时间,存储的都是系统版本号,自增

innodb存储引擎和myisam存储引擎

myisam 加锁和并发,不支持事物

mysql 内建的其他的存储引擎,memory ,保存到内存中,比myisam快至少一个数量级,但是重启会丢失。

用于查找和映射表,用于缓存周期性聚合数据,用于保存数据分析中产生的中间数据,支持hash索引,表级锁,因此并发写入的性能非常低,不支持bolb和text的列,每行的长度的固定的,数据太长了存不下,太短了浪费内存

选择合适的存储引擎

最合适的就是innodb,支持在线热备份,不需要关闭服务器,系统崩溃后如何快速恢复

性能分析工具 new relic 

剖析mysql 查询,看慢查询日志。根据日志生成剖析报告

剖析单挑查询,使用show profile ,默认禁用

show status 返回一些计数器

如何分析查询慢问题,是单条查询慢还是服务器慢,show processList

如何使用查询日志发现问题,开启慢查询,全局级别设置 long_query_time 为,重置所有连接让设置生效

优化

默认notnull,避免使用字符串类型作为标识列,因为消耗空间,如果存储UUID 

很多数据类型可以存储相同类型的数据,只是存储长度和范围不一样,允许的精度不一样

比如dateTime 和 timestamp 

为标识列选择数据类型,要保证关联表都使用相同的类型

 

sql优化  

延迟关联,延迟对列的访问

什么是索引

索引的类型 b树索引,顺序IO 就很快, hash 索引 ,空间数据索引,全文索引 

索引的好处和坏处,碎片

索引的创建 where和 order by 列上建立索引,并且值的范围要比较大,如果多个,放在最前面

索引的使用 前缀索引,索引列的顺序,不要在索引列上运算,始终在索引列单独在比较运算的一侧

可以使用索引排序 ,查询快,

myIsam 和innodb 锁力度 表记和行级,不支持和支持事物,不支持和支持外键,支持和不支持全文索引

使用索引 where order by   ,使用索引 然后使用where过滤

优化排序,使用延迟关联,使用视图安全,方便操作,使用存储过程,主要是快,一次编译

表结构的优化,范式和反范式,1范式 属性不能拆分,2范式 不存在部分函数依赖,3范式 不存在传递函数依赖。数据类型的选择,字符编码和适当拆分,适当冗余,尽量notnull

系统配置的优化 

硬件优化

选择数据类型,字段属性,主键数据类型最好用整形的,not null  date  timestamp ,dateTime

你可能感兴趣的:(mysql)