字段定义
字段定义要见名知意,一般是实际意思的英文单词,如订单就是order;
相同意义的字段名最好命名相同,比如数据来源都是source_type,不要一个source_type,一个sources或者source_types;
一般每张表都要有下面的字段,记录数据状态,并不是业务状态,当然也可以跟业务混用,比如created_at 原意是数据落库时间,也可以当成客户提交数据的时间,这个混用没关系;
关于主键ID的选择:到底是int、bigint型还是varchar型,看业务选择,各有各的好处,确定好之后整个库最好都统一,比如都是int型,都是varchar型;建议用bigint,int自增型不好迁移数据;
单数/复数的形式也统一,比如orders还是order,一般默认是复数形式;
数据的创建日期也统一,要么是datetime,要么都是时间戳int型;
数据库的排序规则COLLATE 要保持统一;
能用utf8mb4就不要utf8,表情符号属于 utf8mb4, utf8里表情不展示;
淘汰外键,一般不再使用外键;
`id` bigint(20) NOT NULL COMMENT 'ID', `remark` varchar(255) DEFAULT '' COMMENT 'ID备注', `state` tinyint(4) DEFAULT '0' COMMENT '状态 0-正常,99-删除', `version` int(11) DEFAULT '0' COMMENT '版本号', `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期', `created_operator_id` varchar(40) DEFAULT '' COMMENT '创建人', `created_operator_name` varchar(40) DEFAULT '' COMMENT '创建人名称', `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改日期', `updated_operator_id` varchar(40) DEFAULT '' COMMENT '修改人', `updated_operator_name` varchar(40) DEFAULT '' COMMENT '修改名称',
表定义
- 表名:每个相同业务的表名要有相同的前缀,以字母t开头的3个字前缀;如:tbm、too等;
- 表名一般不要太长:一般前缀后两个或3个单词,用下划线分割;比如ta_a_b、ta_request_logs 等等;
- 每一个库都应该有个码表,用于配置参数;
- 一般同实例不同数据库的业务不能有相同的表名,code码表例外;
- 表名全部小写;
存储过程/函数
- 存储过程一般以up_table,代表更改某表,或者以proc_开头;
- 复杂的报表查询最好用存储过程生成,然后再查询生成的结果,不要直接写在报表查询里,因为维护起来比较复杂;
视图
- 其他实例的视图,可以通不过DTS先同步过来,然后再新建视图;
- 视图一般v_开头;
触发器
- 每个类型的触发器最好只建一个,比如插入前的所有操作都在一个触发器里面,不要建两个插入前触发器;
- 不要使用navicat自带的触发器修改保存!使用语句进行删除后新增;这里面有个触发器问题,就是一旦你的触发器写错了,整个都会消失掉,原因是修改是 先删除后新增,先删除成功了,新增失败了,导致找不到之前的触发器了!
- 触发器的命名规则是:trg_table_bi, 中间是实际的名称,前缀是触发器的简称,后缀是类型,bi就是before_insert,插入前触发器;
事件
- 事件执行,如果是每天一次的,最好放到凌晨执行,或者是业务低谷时间段执行;
- 事件执行要有监控记录,确保执行成功;
安全
- 每种功能分别建立一个账户,如开发用、同步数据用、报表用等等;
- 所有账户密码应离线保存excel并加上文件密码;
- 遵循一库一开发账户 规则,禁止 一个实例全部的库都用同一个开发账户;
- DTS同步的库,要改库名,一般加后缀_dts,或者_sync,与业务库区分开来;
- 数据库里的敏感信息,如密码、身份证号、手机号等,要加密,禁止明文;
日常监控
- 锁监控:
- 慢查询监控:线上查询超过1秒的;
- 报表慢查询监控:查询超过30秒的;
- 长事务监控:
- 存储过程监控:如运行超过5分钟的;
- 敏感sql监控,如DDL语句;
语句审核
- 可以使用开源工具,如yearing。
- 除DBA人员和运维外,其余同事不得日常中拥有生产库写权限和DDL权限,读权限不能有批量导出功能;测试服可以有读写权限,或者只有读权限;
其他
- DBA离开座位应立即锁屏!开机密码要复杂!
- DBA工作电脑不能随意安装其他软件,避免病毒!
- 大批量修改数据,一定要跟开发核对条件是否正确,操作流程是否无误!