设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > MySql教程 > 正文

完整的数据库MySQL规范(3)

发布时间:2019-11-07 17:24 所属栏目:115 来源:佚名
导读:14. 在明显不会有重复值时使用UNION ALL而不是UNION UNION会把两个结果集的所有数据放到临时表中后再进行去重操作 UNION ALL不会再对结果集进行去重操作 15. 拆分复杂的大SQL为多个小SQL 大SQL:逻辑上比较复杂,需

14. 在明显不会有重复值时使用UNION ALL而不是UNION

  •  UNION会把两个结果集的所有数据放到临时表中后再进行去重操作
  •  UNION ALL不会再对结果集进行去重操作

15. 拆分复杂的大SQL为多个小SQL

  •  大SQL:逻辑上比较复杂,需要占用大量CPU进行计算的SQL
  •  MySQL:一个SQL只能使用一个CPU进行计算
  •  SQL拆分后可以通过并行执行来提高处理效率

十一、数据库操作行为规范

1. 超100万行的批量写(UPDATE、DELETE、INSERT)操作,要分批多次进行操作

  •  大批量操作可能会造成严重的主从延迟

主从环境中,大批量操作可能会造成严重的主从延迟,大批量的写操作一般都需要执行一定长的时间,而只有当主库上执行完成后,才会在其他从库上执行,所以会造成主库与从库长时间的延迟情况

  •  binlog日志为row格式时会产生大量的日志

大批量写操作会产生大量日志,特别是对于row格式二进制数据而言,由于在row格式中会记录每一行数据的修改,我们一次修改的数据越多,产生的日志量也就会越多,日志的传输和恢复所需要的时间也就越长,这也是造成主从延迟的一个原因。

  •  避免产生大事务操作

大批量修改数据,一定是在一个事务中进行的,这就会造成表中大批量数据进行锁定,从而导致大量的阻塞,阻塞会对MySQL的性能产生非常大的影响。

特别是长时间的阻塞会占满所有数据库的可用连接,这会使生产环境中的其他应用无法连接到数据库,因此一定要注意大批量写操作要进行分批。

2. 对于大表使用pt-online-schema-change修改表结构

  •  避免大表修改产生的主从延迟
  •  避免在对表字段进行修改时进行锁表

对大表数据结构的修改一定要谨慎,会造成严重的锁表操作,尤其是生产环境,是不能容忍的。

pt-online-schema-change它会首先建立一个与原表结构相同的新表,并且在新表上进行表结构的修改,然后再把原表中的数据复制到新表中,并在原表中增加一些触发器。

把原表中新增的数据也复制到新表中,在行所有数据复制完成之后,把新表命名成原表,并把原来的表删除掉。

把原来一个DDL操作,分解成多个小的批次进行。

3. 禁止为程序使用的账号赋予super权限

当达到最大连接数限制时,还运行1个有super权限的用户连接super权限只能留给DBA处理问题的账号使用。

4. 对于程序连接数据库账号,遵循权限最小原则

程序使用数据库账号只能在一个DB下使用,不准跨库 程序使用的账号原则上不准有drop权限。

【编辑推荐】

  1. 再有人问你为什么MySQL用B+树做索引,就把这篇文章发给她
  2. 详解MySQL数据库删除所有表的外键约束、禁用外键约束相关脚本
  3. 分分钟解决 MySQL 查询速度慢与性能差
  4. 超详细的5个Oracle数据库分组函数总结
  5. 数据库连接配置策略和实践指南
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读