mysql性能与优化

1.影响sql的原因
    - 超高的效率低下的sql,qps超高
    - 大量的并发 数据库连接数被占满(max_connections默认100)超高的cpu使用率 因cpu资源耗尽而出现死机
    - 磁盘IO性能突然下降(使用更快的磁盘设备)其它大量消耗盘性能的计划任务
    - 网卡IO被占满 (减少从服务器的数量,进行分级缓,避免select *,分离业务网络)
    - 大表(记录行数巨大,单表超过千万行,表文件巨大,表数据文件超过10G)
2.什么是锁
    - 锁对主要作用是管理共享资源的并发访问
    - 锁用于实现事务的隔离性
共享锁    独占锁
阻塞 与 死锁不一样

阻塞     数据库阻塞的现象:第一个连接占有资源没有释放,而第二个连接需要获取这个资源。如果第一个连接没有提交或者回滚,
第二个连接会一直等待下去,直到第一个连接释放该资源为止。对于阻塞,数据库无法处理,所以对数据库操作要及时地提交或
数据库死锁  数据库死锁的现象:第一个连接占有资源没有释放,准备获取第二个连接所占用的资源,而第二个连接占有资源没有释放,准备获取第一个连接所占用的资源。这种互相占有对方需要获取的资源的现象叫做死锁。对于死锁,数据库处理方法:牺牲一个

连接,保证另外一个连接成功执行。
如何选择正确的引擎
 -事务 - 备份 -崩溃恢复  -存储引擎自有特性 
3.数据库设计对性能的影响
     过份的反范式为表建立太多列
     过份的范式造成太多表关联
     使用不巧当的分区
     使用外键保证数据太多保证完整性
数据库结构优化
1.减少数据冗余
2.尽量避免数据库维护中出现更新,插入和删除异常
3.节约数据存储空间
4.提高查询效率
数据库结构设计
三范式 
1.第一范式
数据库表中的所有字段都只具有单一属性
单一属性的列是由基本的数据类型所构成
设计出来的表都是简单的二维表
2.第二范式
要求符合第一范式,消除了非主属性对于码的部分函数依赖
3.第三范式
属性不依赖于其它
优点  
      可以尽量减少数据冗余,数据表更新体积小  
      范式化更新操作比反范式化更快
      范式化表通常比反范式化更小
缺点
      查询需要多个表进行关联
      更难进行索引优化
mysql复制

你可能感兴趣的:(mysql性能与优化)