一、数据库命令规范
??1)所有数据库对象名称必须使用小写字母并用下划线分割;
??2??所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来);
??3??数据库对象的命名要能做到见名识意,并且最后不要超??32个字符;
??4??临时库表必须??tmp为前缀,备份表必须??bak为前缀并以日期(时间戳)为后缀??
??5)所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)??
二、数据库基本涉及规范
??1)所有表必须使用Innodb存储引擎
??2??数据库和表的字符集同意使??UTF8
??3)所有表和字段都需要添加注??
??4??尽量控制单表数据量的大小,建议控制在500W以内
??5??谨慎使用MySQL分区??
??6)尽量做到冷热数据分离,减小表的宽度
??7)禁止在表中建立预留字段
??8)禁止在数据库中存储图片,文件等大的二进制数??
??9)禁止在线上做数据库压力测试
??10)禁止从开发环境,测试环境直接连接生成环境数据??
三、数据库字段设计规范
??1)优先选择符合存储需要的最小的数据类型
??2??避免使用TEXT??BLOB数据类型,最常见??TEXT类型可以存储64k的数??
??3??避免使用ENUM类型
??4??尽可能把所有列定义??NOT NULL
??5??使用TIMESTAMP<4个字??>??DATETIME类型<8个字??>存储时间
??6??同财务相关的金额类数据必须使??decimal类型
四、数据库开发规??
??1)建议使用预编译语句进行数据库操??
??2)避免数据类型的隐式转换
??3)充分利用表上已经存在的索引
??4)数据库设计时,应该要对以后扩展进行考虑
??5)程序连接不同的数据库使用不同的账号,进行跨库查??
??6??禁止使用SELECT*必须使用SELECT<字段列表>查询
??7??禁止使用不含字段列表??INSERT语句
??8??避免使用子查询,可以吧子查询优化??join操作
??9??避免使用JOIN关联
??10)减少同数据库的交互次数
??11??对应同一列进??or判断时,使用in代替or
??12??禁止使用order by rand()进行随机排序
??13)WHERE从句中禁止对列进行函数转换和计算
??14??在明显不会有重复值时使用UNION ALL而不??UNION
??15??拆分复杂的大SQL为多个小SQL
??、数据库操作行为规范
??1????100万行的批量写??UPDATE??DELETE??INSERT)操作,要分批多次进行操??
??2??对于大表使用pt-online-schema-change修改表结??
??3??禁止为程序使用的账号赋予super权限
??4??对于程序连接数据库账号,遵循权限最小原??
数据库管理是一项繁杂而又琐碎的工作,即使是最专业的数据库工程师仍然无法避免日常操作所带来的失误。那么,数据库问题频发的原因有哪些呢??
1. 传统??IT建设方式、管理方式导致了今天的问????传统的建设方式:一大堆厂商的产品简单堆叠、松散拼凑?? 传统的管理方式:用户的运维人??+一大堆厂商
2. 缺乏专业规划??IT架构,缺乏稳定性,增加管理复杂性架构缺乏规划和合理化设计,借助一大堆厂商提供的分散的单机、双机、备份一体机、虚拟化、超融合等技术的简单堆??
3. 传统的数据库管理方式无法满足现代企业的业务要??
4. 高速的业务增长导致数据平台面临巨大挑战
网强IT综合管理软件,可实现??MySQL??DB2??Oracle??SQL Server等市场常见数据库厂商的产品进行跨平台、跨厂商的统一管理,实现对数据库的全方位监控与管理,让数据库运维不再成为你的烦恼??