Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305439
  • 博文数量: 85
  • 博客积分: 1508
  • 博客等级: 上尉
  • 技术积分: 791
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-06 11:49
文章分类

全部博文(85)

文章存档

2013年(22)

2012年(63)

我的朋友

分类: Mysql/postgreSQL

2012-10-30 09:37:56

导读

从过往MySQL数据库生产环境的维护工作中,总结的一些小经验和知识,未必有多深奥,但是对我们消除隐患,确保MySQL数据库生产环境四个9的作用非常有效之一的手段,运维人员要非常注意细节,尽量减低故障发生的概率。

(一)   DML语句书写建议

(1).     DML语句不允许出现@number方式替代字段名称

不合理的写法:

UPDATE table_name  SET @1=NOW() WHERE @2=1;

正确的写法:

UPDATE table_name  SET column_name1=NOW()  WHERE column_name2=1;

(2).     UPDATE OR DELETE 禁用LIMIT子句

不合理的写法:

UPDATE table_name SET column_name1=NOW() WHERE column_name2=1 LIMIT 1;

正确的写法:

UPDATE table_name SET column_name1=NOW() WHERE column_name2=1;

(3).     INSERT语句需要写清楚值和字段对应关系

不合理的写法:

INSERT INTO table_name VALUES(NOW(),DATE_ADD(NOW(),INTERVAL +1 DAY));

正确的写法:

INSERT INTO table_name(gmt_create,gmt_modify)  VALUES(NOW(),DATE_ADD(NOW(),INTERVAL +1 DAY));

(4).     DML语句少用不确定性函数

常见被大家使用的不确定性函数:UUID()、RAND()、SYSDATE()等函数,若无特殊用处之外,请以确定性函数替代之。

(二)   大数据量的DELETE OR UPDATE

     可能出于某些原因和运营目的,需要对数据库中的数据进行大量的清理或更改某字段的值,分别举 二个示例:

①   网络专项整治的时期,需要删除大量含某些关键词的内容;

②     给符合某一条件(例如:等级,在线时长)的游戏玩家,赠送100~1000不等数量的游戏币;

    给出的2个数据修改需求示例,若是直接根据相关要求去做,一个是需要用到模糊查询,另一个数据更新条件也没有合理索引可用,为此可能造成表对象表级锁被长时间锁住,而且阻塞其他更改类型数据操作服务,所以我们不得不采用更合理的办法,建议如下步骤实施:

①   设计并创建一张表tmp_pk_data ,用于记录将要被修改记录的主键,及需要的相关信息;

②   优先考虑在备库上跑一条SQL命令或存储过程的方式,把主键及相关数据写到表tmp_pk_data中;

③     编写一个存储过程,使用游标循环控制获得tmp_pd_data的信息,根据主键更新或删除目标表的数据,且建议此操作在备库上完成(注释:必须是双主复制模式,才可在备库上执行);

(三)   定期规律性清理数据的DELETE

定期规律性数据的清理,优先对目标表的数据操纵方式进行分类:

①   若是日志类型的数据,则完全可以改为借助分区表的方式,比如按日期删除数据的条件,则可以用日期作为数据分区条件,然后增删分区的方式实现数据的清理工作;

②   若是数据的UPDATE/DELETE/SELECT操纵条件,与定期清理数据的规则一致或被其包含,则可以考虑使用分区表,然后借助删除分区方式达到数据清理的目标;

③     若不能使用分区表解决的,则可以考虑参考上章节介绍的“大数据量的DELETE OR UPDATE”内容;

(四)   M-M架构的大数据量DML技巧

 定期规律性数据的清理,优先对目标表的数据操纵方式进行分类:

①   若是日志类型的数据,则完全可以改为借助分区表的方式,比如按日期删除数据的条件,则可以用日期作为数据分区条件,然后增删分区的方式实现数据的清理工作;

②   若是数据的UPDATE/DELETE/SELECT操纵条件,与定期清理数据的规则一致或被其包含,则可以考虑使用分区表,然后借助删除分区方式达到数据清理的目标;

③     若不能使用分区表解决的,则可以考虑参考上章节介绍的“大数据量的DELETE OR UPDATE”内容;


原文地址:

阅读(1049) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~