想要Freestyle?先要遵守 MySQL 这十大铁律!
在工作中作为DBA的我们,可能也会需要面对开发人员各种 Freestyle 的要求,但是他们是否知道在操作数据库的时候,需要注意哪些事项呢?
今儿带着大家简单聊聊 MySQL 数据库的开发行为规范,十大铁的纪律。对DBA老铁们是一种帮助,对开发人员也是一种学习。
1. 创建的表要使用 innodb 存储引擎表
现在基本上大部分业务都是 innodb 存储引擎,MySQL 8.0 开始,彻底不再使用 myisam。每张表都要包含一个自增的主键 id。
2. 数据类型的选择上,要秉着越简单越好,越小越好的原则。
建议使用 int 来存储 ipv4 的类型,可以通过函数转换。金钱类的字段也可以存储为 int 类型,用分做单位就可以了。
时间类型可以采用 datetime,它比 tiemstamp 可用范围大,存储空间也从原来的 8 字节,降到了 5 字节,性能上也不错。
mysql> select inet_aton('192.168.56.132'); +-----------------------------+ | inet_aton('192.168.56.132') | +-----------------------------+ | 3232249988 | +-----------------------------+ mysql> select inet_ntoa(3232249988); +-----------------------+ | inet_ntoa(3232249988) | +-----------------------+ | 192.168.56.132 | +-----------------------+ 1 row in set (0.00 sec)
3. 库名、表名、字段名必须使用小写字母,采用“_“分割
MySQL 数据库中,通过参数 lower_case_table_names 来区分表名的大小写 默认为 0,代表大小写敏感。如果是 1,大小写不敏感,以小写存储。
4. 不建议使用 ENUM 类型,使用 TINYINT 来代替。
也不建议使用大数据类型的字段如text或者blob出现在业务表中。
5. 表字符集使用 utf8,必要时可申请使用 utf8mb4 字符集。
它的通用性比 gbk,latin1 都要好。utf8 字符集存储汉字占用 3 个字节,如果遇到表情存储的要求,就可以使用 utf8mb4
6. select 查询表的时候只需要获取必要的字段,避免使用 select *。
这样可以减少网络带宽消耗,还有可能利用到覆盖索引
7. 所有字段定义中,默认都加上 not null 约束,避免出现 null。
在对该字段进行 select count() 统计计数时,可以让统计结果更准确,因为值为 null 的数据,不会被计算进去的。
8. 创建索引的时候不要在低基数列上建立索引,像 sex、status 这种字段上面。
要通过索引的选择性来判断 select count(distinct col1)/count(*) from table_name; 越接近 1,证明选择性越高,越适合创建索引。一般情况下,单表索引数量不要超过 4-5 个范围。
9. SQL语句中,尽量避免出现 or 子句
这种判断的子句可以让程序自行完成,不要交给数据库判断。也要避免使用 union,尽量采用 union all,减少了去重和排序的工作。
10. 时时做好监控工作,经常对线上 sql 语句,进行在线捕获进行分析。
可以利用 percona-toolkit 工具。
目前先写这么多,欢迎大家及时补充,其实好多工作都需要 DBA 和开发人员密切配合。新的业务要上线,DBA 就要参与到业务中,配合开发一起建表建模。我们只有一个目的,就是更舒服得工作,挣更多的钱,那为啥不能改变一下我们不好的工作习惯呢。工作中不是你想怎么着,就怎么着!继续努力吧!
更多精彩文章:
我的在线课程:《MySQL 体系结构深入剖析及实战 DBA 视频课程》
课程目标
通过对 MySQL 体系结构深入剖析讲解,配合生产环境备份恢复,主从复制,高可用集群架构和优化等实战演练,让同学们可以对 MySQL 数据库有个由浅到深的认识。最后的课程部分还会对面试题总结进行讲解,有利于同学们可以找到理想的 MySQL DBA 的工作。
适用人群
刚接触MySQL数据库的同学,有一定运维经验的运维人员,想提高自己MySQL数据库水平的DBA。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
WSFC2016 跨站点运行状况检测
之前在WSFC基础知识奠基篇曾经为大家介绍过微软WSFC故障转移的过程,我们来重温一下 1.按照要求部署配置群集节点,确保群集服务器利用了冗余技术消除了服务器,网络,存储的单一故障点 2.保证群集内所有节点都可以访问到共享存储 3.群集应用将应用数据写入到群集共享存储 4.管理员新增节点1服务器上面功能角色,新增完成后节点1服务器群集数据库记录新增的角色功能以及相关联的信息,稍后会把信息同步至其它节点2,及群集仲裁磁盘 5.群集节点之间按照预定的心跳检测频率进行全网握手检测 6.节点1出现故障服务器忽然关机,这时节点2心跳检测频率达到阈值,判定节点1已经离线 7.节点2判定节点1已经离线后,会根据已经同步的群集数据库信息,查看节点1服务器当前承载的群集应用,重新将群集应用与关联IP地址,群集磁盘在节点2进行上线 8.客户端正常访问群集名称,使用群集服务,但原有节点1的群集应用,现已由节点2提供,故障转移结束 本篇我们将主要关注与群集故障转移的发生,大家可以看到从第五步开始,群集开始进行运行状况检测,随后以运行状况检查结果,来决定群集节点是否应执行故障转移 这在任何一个高可用群集里面都是...
- 下一篇
回车恐惧症?13个 JUNOS 技巧助你轻松无忧配置网络
回车键,日常电脑使用中,扮演“确认”或“执行”事件的功效。 在网络工程师的平日运维工作中,无论是计划性的网络配置修改,还是临时性的故障处理,大家是否都存在同样的感受:特别小心敲击回车键,再三确认以后才执行。 相信以下场景是很多做网络的朋友曾经都遇到过的,在远程配置 Cisco 或者其他厂商路由器或交换机时,一顿复制粘贴然后敲下回车结果就是这样: 1. 配错接口 IP 地址——Game Over! 2. 修改静态路由条目或者动态路由协议,导致路由丢失----Game Over! 3. 配置错 VLAN ID 或者二层接口 ACCESS/TRUNK 配置错误----Game Over! 这个时候大部分人都是一脸惊慌,脑子琢磨怎么解决:给远端人员打电话把路由器交换机重启。反正配置没保存呢,重启就回来了。 但是如果远端就是客户的话,后面几天日子恐怕就不太好过了。要是这是公司另外一个厂房的核心交换,这事儿就大了。重启是不可能了,再去现场花费的时间成本无可估量。 总的来说,在做日常网络配置中,回车恐惧症来源于如下几个方面: ● 对自己准备的配置没信心,担心配置中有低级错误 ●害怕配置设备过程中遇到...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- MySQL8.0.19开启GTID主从同步CentOS8
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装