1.影响sql的原因
- 超高的效率低下的sql,qps超高
- 大量的并发 数据库连接数被占满(max_connections默认100)超高的cpu使用率 因cpu资源耗尽而出现死机
- 磁盘IO性能突然下降(使用更快的磁盘设备)其它大量消耗盘性能的计划任务
- 网卡IO被占满 (减少从服务器的数量,进行分级缓,避免select *,分离业务网络)
- 大表(记录行数巨大,单表超过千万行,表文件巨大,表数据文件超过10G)
2.什么是锁
- 锁对主要作用是管理共享资源的并发访问
- 锁用于实现事务的隔离性
共享锁 独占锁
阻塞 与 死锁不一样
阻塞 数据库阻塞的现象:第一个连接占有资源没有释放,而第二个连接需要获取这个资源。如果第一个连接没有提交或者回滚,
第二个连接会一直等待下去,直到第一个连接释放该资源为止。对于阻塞,数据库无法处理,所以对数据库操作要及时地提交或
数据库死锁 数据库死锁的现象:第一个连接占有资源没有释放,准备获取第二个连接所占用的资源,而第二个连接占有资源没有释放,准备获取第一个连接所占用的资源。这种互相占有对方需要获取的资源的现象叫做死锁。对于死锁,数据库处理方法:牺牲一个
连接,保证另外一个连接成功执行。
如何选择正确的引擎
-事务 - 备份 -崩溃恢复 -存储引擎自有特性
3.数据库设计对性能的影响
过份的反范式为表建立太多列
过份的范式造成太多表关联
使用不巧当的分区
使用外键保证数据太多保证完整性
数据库结构优化
1.减少数据冗余
2.尽量避免数据库维护中出现更新,插入和删除异常
3.节约数据存储空间
4.提高查询效率
数据库结构设计
三范式
1.第一范式
数据库表中的所有字段都只具有单一属性
单一属性的列是由基本的数据类型所构成
设计出来的表都是简单的二维表
2.第二范式
要求符合第一范式,消除了非主属性对于码的部分函数依赖
3.第三范式
属性不依赖于其它
优点
可以尽量减少数据冗余,数据表更新体积小
范式化更新操作比反范式化更快
范式化表通常比反范式化更小
缺点
查询需要多个表进行关联
更难进行索引优化
mysql复制
网友评论