数据库优化之实例和故事

数据库优化之实例和故事数据库

简要:每一项技术都离不开数据库,数据库犹如人的大脑;密不可分,一旦出了问题(故障),停顿,卡主后果可想而知;潜心学习数据库优化3个月,如今将学到的经验分享给你们,但愿可以跟各位PHP大神分享和学习探索,若是有不对或者好的建议告知下; ~

1、合理时间备份数据

备份数据,是每一个项目维护的平常工做;有利于数据在系统遭受破坏或其余特定状况下,从新加以利用的一个过程;项目的备份时间,大都是根据项目需求来决定,好比:每小时,指定时间等; 

 案例: 某个项目正进行大型活动,数据库因为巨大用户量的访问以及定时备份;形成带宽出现峰值,大量执行操做处于队列状态,导致数据库中止工做;后端

 方法:分布式

  1. 若拓扑结构单一结构(单台数据库),中止定时任务(备份);
  2. 若拓扑结构非单一结构(主从/分布式),可中止定时任务;或主(数据库)放弃执行定时任务,从(数据库)执行;

2、避免对大表操做

何谓大表,是指记录行数巨大,单标超过千万行;表数据文件巨大,表数据文件超过10G;

(1) 慢查询
很难在必定时间内过滤出所须要的数据,缘由:来源少->区分度低->大量磁盘IO->下降磁盘效率->大量慢查询学习

(2)大表对DDL操做优化

 - 创建索引须要很长的时间,过程可能会形成:主从延迟、锁表甚至于形成死锁blog

 - 修改表结构须要长时间锁表,过程可能会形成:主从延迟,锁表,阻塞索引

方法:
 1. 分库分表
 2. 数据归档:减小先后端业务影响队列

大事务

大事务,运行时间比较长,操做的数据比较多的事务

(1)风险事务

  • 锁定太多数据,形成大量的阻塞
  • 回滚时间比较长
  • 执行时间长,容易形成主从延迟

(2)方法get

  • 避免一次处理太多的数据(增删改查)
  • 移除没必要要在事务中的select操做

做者:不动峰
博客园: http://www.cnblogs.com/mylly/ 版权全部,欢迎保留原文连接进行转载:)
相关文章
相关标签/搜索