数据库操作行为规范(持续更新)

  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权限,无delete权限。

  5、运维日志

    任何操作都要记录在运维日志。

  6、审计

    任何操作都要经过DBA审核。

  7、测试

    禁止在线上做压力测试

你可能感兴趣的:(MySQL,数据库操作)