MYSQL数据库开发规范

1.建议使用预编译语句来进行数据库的操作。

2.避免数据的隐式转换,这样会使索引失效。

3.禁止使用select * 来进行查询并且使用没有字段列表的insert语句。

4.优先利用表上已经存在的索引。

5.对超过100万行的批量写操作,要分批多次进行操作。原因:大批量操作可能会造成严重的主从延迟,binlog日志为row格式时会产生大量的日志,避免产生大事务操作。

6.对于大表使用pt-online-schema-change修改表结构。避免大表修改时造成的主从延迟,避免在对表字段进行修改时进行锁表。

7.super权限的账号只能留给dba维护使用,程序使用账号不能拥有这种权限,对于程序连接数据库账号,遵循权限最小原则,程序使用数据库账号只能在一个db使用,不能进行跨库操作,程序使用的账号原则上不允许有drop权限。

8.创建表时进行hash分区,PARTITION BY HASH(customer_id) PARTITION 4。

拿用户登入日志表当例子进行range分区,PARTITION BY RANGE(YEAR(login_time))(

PARTITION p0 VALUE LESS THAN(2015),

扫描二维码关注公众号,回复: 3287952 查看本文章

PARTITION P1 VALUE LESS THAN(2016),

PARTITION P2 VALUE LESS THAN(2017)

);

9.查询分区信息:

select table_name,partition_name,partition_description,table_rows from infomation_schema.'PARTITIONS' where table_name='customer_login_log';

10.添加一个分区:alter table customer_login_log ADD PARTITION (PARTITION P4 VALUES LESS THAN (2018));

11.删除某个分区:alter table sustomer_login_log drop partition p0;

将分区表中的数据进行归档要求:1.mysql版本必须要高于5.7版本。2.迁移到的数据表必须是非分区表,并且表结构必须跟归档表一样,归档迁移后必须要用drop把分区删除。

alter table customer_login_log exchange p2 with table arch_customer_login_log;

将归档表的引擎换成归档引擎,alter table arch_customer_login_log engine=ARCHIVE;注:归档引擎中的表不可以读也不可以取。

12.使用分区表的注意事项:1.结合业务场景使用分区键,避免跨分区查询。2.对分区表进行查询时最好在where从句中包含分区键。3.具有主键和唯一索引的表,主键和唯一索引必须是分区键的一部分。

猜你喜欢

转载自blog.csdn.net/qa76774730/article/details/72818794