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

大家好~今天为大家更新《分布式事务数据库 —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 连接符号字样。举例说明:

1228931_155843245999428.png

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,且无任何警告信息提示。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值