|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL对硬件的较低要求是其最大的优势之一,不过需要注意的是:内存越多越好,因为所有的重要数据存储都在内存中完成。</p>从过往MySQL数据库临盆情况的保护事情中,总结的一些小履历和常识,一定有多深邃,可是对我们打消隐患,确保MySQL数据库临盆情况四个9的感化十分无效之一的手腕,运维职员要十分注重细节,只管减低妨碍产生的几率。 (一)DML语句誊写倡议
(1).DML语句不同意呈现@number体例替换字段称号
分歧理的写法:
UPDATEtable_nameSET@1=NOW()WHERE@2=1;
准确的写法:
UPDATEtable_nameSETcolumn_name1=NOW()WHEREcolumn_name2=1;
(2).UPDATEORDELETE禁用LIMIT子句
分歧理的写法:
UPDATEtable_nameSETcolumn_name1=NOW()WHEREcolumn_name2=1LIMIT1;
准确的写法:
UPDATEtable_nameSETcolumn_name1=NOW()WHEREcolumn_name2=1;
(3).INSERT语句必要写分明值和字段对应干系
分歧理的写法:
INSERTINTOtable_nameVALUES(NOW(),DATE_ADD(NOW(),INTERVAL+1DAY));
准确的写法:
INSERTINTOtable_name(gmt_create,gmt_modify)VALUES(NOW(),DATE_ADD(NOW(),INTERVAL+1DAY));
(4).DML语句罕用不断定性函数
罕见被人人利用的不断定性函数:UUID()、RAND()、SYSDATE()等函数,若无特别用途以外,请以断定性函数替换之。
保举浏览的手艺文章:曾用于外部培训的PPT内容:MySQL开辟标准与有用手艺交换
(二)年夜数据量的DELETEORUPDATE
大概出于某些缘故原由和运营目标,必要对数据库中的数据举行大批的清算或变动某字段的值,分离举二个示例:
①收集专项整治的时代,必要删除大批含某些关头词的内容;
②给切合某一前提(比方:品级,在线时长)的游戏玩家,赠予100~1000不等数目的游戏币;
给出的2个数据修正需求示例,如果间接依据相干请求往做,一个是必要用到含混查询,另外一个数据更新前提也没有公道索引可用,为此大概形成表工具表级锁被长工夫锁住,并且堵塞其他变动范例数据操纵服务,以是我们不能不接纳更公道的举措,倡议以下步骤实行:
①计划并创立一张表tmp_pk_data,用于纪录将要被修正纪录的主键,及必要的相干信息;
②优先思索在备库上跑一条SQL命令或存储历程的体例,把主键及相干数据写到表tmp_pk_data中;
③编写一个存储历程,利用游标轮回把持取得tmp_pd_data的信息,依据主键更新或删除方针表的数据,且倡议此操纵在备库上完成(正文:必需是双主复制形式,才可在备库上实行);
(三)按期纪律性清算数据的DELETE
按期纪律性数据的清算,优先对方针表的数据利用体例举行分类:
①如果日记范例的数据,则完整能够改成借助分区表的体例,好比按日期删除数据的前提,则能够用日期作为数据分区前提,然后增删分区的体例完成数据的清算事情;
②如果数据的UPDATE/DELETE/SELECT利用前提,与按期清算数据的划定规矩分歧或被其包括,则能够思索利用分区表,然后借助删除分区体例到达数据清算的方针;
③若不克不及利用分区表办理的,则能够思索参考上章节先容的“年夜数据量的DELETEORUPDATE”内容;
(四)M-M架构的年夜数据量DML技能
按期纪律性数据的清算,优先对方针表的数据利用体例举行分类:
①如果日记范例的数据,则完整能够改成借助分区表的体例,好比按日期删除数据的前提,则能够用日期作为数据分区前提,然后增删分区的体例完成数据的清算事情;
②如果数据的UPDATE/DELETE/SELECT利用前提,与按期清算数据的划定规矩分歧或被其包括,则能够思索利用分区表,然后借助删除分区体例到达数据清算的方针;
③若不克不及利用分区表办理的,则能够思索参考上章节先容的“年夜数据量的DELETEORUPDATE”内容;
据我的观察,现在有一个趋势,那些经过正式培训的数据库管理员DBA更倾向于选择一个专有关系数据库,例如Oracle。对于一些具有专门数据库管理员的比较大的环境来说,MySQL很难得到宠爱,这时候,关于MySQL是否真的具有良好的可扩展性的争论已经没有意义。 |
|