Amygo
作者Amygo2019-05-21 17:54
DBA, 分布式事务数据库

分布式事务数据库 —-MySQL 数据库开发规范(第八节)

字数 1045阅读 1790评论 1赞 4

大家好~今天为大家更新《分布式事务数据库 —MySQL 数据库开发规范》最后一节的内容!感谢大家持续的观看和陪伴。
接下来会为大家奉上技术专题——《MySQL的左连接》。希望大家可以继续关注我。
Amy始终致力于为大家带来最实用的的数据库知识,希望可以帮助你们快速的提供实战技能!
第八节

UPDATE 与 DELETE
8.1 UPDATE 和 DELETE 语句不使用 LIMIT
DML 类型的 UPDATE 和 DELETE 修改语句禁止使用 LIMIT 子句。若修改类型的语句使用
LIMIT 子句,容易导致出现死锁和锁资源争用,还有导致主备数据不一致的风险,做二进制
日志增量恢复的时候更复杂。此外,在 ROW 或 MIXED 模式下,会明细那增加二进制日志
量,消耗更多数据库服务器的物理 IO。
确实需要分批删除数据的方式,推荐使用 SELECT 查询语句拿到被删除数据的主键值,然
后使用 UPDATE/DELETE … WHERE …IN(pk1,pk2…)的语句方式实现。
HotDB Server - MySQL 数据库开发规范
8.2 UPDATE 禁止修改分片字段值
若 ID 为分片字段,禁止执行下列 SQL 语句:
UPDATE table_name SET id=? WHERE column1=xx。
执行该语句会导致分片数据混乱,因此,禁止使用修改分布字段值。
8.3 UPDATE 和 DELETE 操作尽量依据主键或唯一索引进行操纵
设计 DML 类型的 UPDATE 和 DELETE 操作时,尽可能地让应用程序获得主键,然后依据
用户的操作转换成走主键条件去更新数据库表的数据,性能效率更高,锁记录或锁范围的时
间更短,占用资源也更少。
8.4 禁止在 UPDATE 操作的 SET 子句中出现 AND 连接符号
若把 SET 子句的连接符号 “,” 错误写成 “AND”,将会导致寓意完全错误,故禁止在 SET
子句中出现 AND 连接符号字样。举例说明:
p6jd48ff79p

p6jd48ff79p

正确示例:SET t.billing_flag =2 , modified_tm=NOW();
错误示例:SET t.billing_flag = 2 AND modified_tm=NOW();
此时“ut.billing_flag = 2 AND modified_tm=NOW()”将这个与运算的结果集作为值赋给
ut.billing_flag,且无任何警告信息提示。

感谢大家的观看。明天记得来看我的新文章哦。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论1 条评论

wuwenpinwuwenpin软件开发工程师, 南京
2019-05-22 09:13
感谢分享!!

Amygo@wuwenpin 谢谢支持呦~

2019-05-22 17:58
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广