- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
MySQL数据库使用规范
•目的:
–防止开发人员数据库,合理使用
–合理的规范化生产环境的数据库
•包含:
–数据库设计规范
–安全规范
–SQL编写规范
–集群部署规范
数据库设计
•DB和表的名字控制在32个字符以内
•分库分表名称为“库名_编号”|“表名_编号”
•创建DB和表时显示指定字符集
–createdatabasesakiladefaultcharactersetutf8;
•创建的表必须加comment
•创建的表必须显示指定engine
•表内auto_increment列使用bigint
•选择度较小列使用tinyint或smallint
•ip地址使用int类型,用INETNTOA()和INETATON()转换
•表中所有字段必须为NOTNULL,空值则指定default值
数据库设计
•innodb表必须有主键列,且auto_increment,且更新,可以删
除(防止索引,降级性能)
•普通索引使用“idx_”开头,uniquekey使用“uq_”开头
•单个索引长度不超过64KB
•单个表上索引不超过8个
•分区表的分区字段必须有索引,或者是组合索引的第一列
•分区个数过1024
•单个分区表文件大小过3G
•对分区表的altertable操作必须经过DBA审核
•创建的临时表必须以“tmp_”开头,备份表必须以“bak_”开头
•临时表和备份表必须定期清理
数据库设计
•数据库库表字符集和前端程序、中间件必须保持一致
•使用外键、临时表、视图、UDF、routine、trigger
•不建议使用enum,set,blob,text字段
安全规划
•生产环境程序权限必须分类:
–读写,且读写分离
–DDL
–具有特殊权限的,如replicationclient,showdatabases等
–和管理程序
•一个对应一个数据库模块(database),且名必须包含模块名
•开发人员直接ssh登陆DBA机器,程序具有file、super等高危权限
•程序使用loaddata,用loaddatalocal替代。若无loaddata需求,则关
闭服务器的--local-infile选项。
•临时包含“tmp”,线下包含“offline”等可识别字样
•同一个集群内同步和必须统一
•新建、权限、修改必须使用grant语句
•收回权限必须使用revoke或dropuser语句
•数据库参数old_passwords必须设为OFF
SQL编写
•写select*
•不建议使用union,推荐unionall,个数限制在7个以内
•insert语句指定具体字段名称,不要写成insert..values(..)
•表join数限制在3个以内
•不建议使用关联子查询(MySQL5.6之前不建议使用in子查询)
•在DML语句中使用join
•in值列表限制在800以内
•事务里批量更新数据需要控制数量,进行必要的程序或DB端sleep,
做到少量多次
•事务涉及到的表必须全部是innodb表
•写入和事务发往主库,只读SQL尽量发往从库
SQL编写
•DML语句必须有where条件,且使用索引查找
•程序端查询大表的全表数据,建议下库进行
•生产环境使用hint,如sql_nocache,forceindex,
ignorekey,straightjoin等
•使用event
•使用用户自定义变量
•where条件里等号左右字段类型必须一致
•使用mysqldump和loaddata时必须显示指定字符集和数据库
一致
集群部署
•同一集群内必须全部一样
•同步参
原创力文档


文档评论(0)