MySQL数据库生产环境的维护工作总结的经验
从过往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()等函数,若无特殊用处之外,请以确定性函数替代之。 推荐阅读的技术文章:曾用于内部培训的PPT内容:MySQL开发规范与实用技术交流 (二) 大数据量的DELETE OR UPDATE 可能出于某些原因和运营目的,需要对数据库中的数据进行大量的清理或更改某字段的值,分别举 二个示例: ① 网络专项整治的时期,需要删除大量含某些关键词的内容; ② 给符合某一条件(例如:等级,在线时长)的游戏玩家,赠送100~1000不等数量的游戏币; 给出的2个数据修改需求示例,若是直接根据相关要求去做,一个是需要用到模糊查询,另一个数据更新条件也没有合理索引可用,为此可能造成表对象表级锁被长时间锁住,而且阻塞其他更改类型数据操作服务,所以我们不得不采用更合理的办法,建议如下步骤实施: ① 设计并创建一张表tmp_pk_data ,用于记录将要被修改记录的主键,及需要的相关信息; ② 优先考虑在备库上跑一条SQL命令或存储过程的方式,把主键及相关数据写到表tmp_pk_data中; ③ 编写一个存储过程,使用游标循环控制获得tmp_pd_data的信息,根据主键更新或删除目标表的数据,且建议此操作在备库上完成(注释:必须是双主复制模式,才可在备库上 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |