MySQL的那些事
我原本是 Android 开发,后来转了项目经理,在项目开发的过程中发现一些跟 MySQL 相关的东西,就想着记录下来,以下均为个人看法,欢迎沟通交流。
一、索引
我们项目数据库一直用的都是 MySQL,刚上线根本没加索引,也没什么感觉。可是随着用户量的暴增,发现很多查询操作都很慢,我们一直去检查程序的流程是否出了问题,却忽略了数据库索引的问题。
后来经过 CTO 的提醒,我们给用户表相关字段添加了索引,查询速度立马就快了!本来 32vCPU/64G 资源占用都能到 99%,加了索引之后,直接降到 3%,甚至更低!
索引的优点是提高了查询效率,缺点是在插入、更新和删除记录时,需要同时修改索引,因此,索引越多,插入、更新和删除记录的速度就越慢。
即使加索引可能导致写入数据变慢,对于数据量大,而且频繁查询的字段,必须加索引!
二、SQL审核
项目上线初期,需要改库的,直接就线上操作了,情况紧急的时候,我甚至用手机直接修改过数据库。
可是随着用户量的增加,修改数据造成的影响变得越来越大,有两次直接在线上改库就改错了,还好紧急修改了回去。幸亏不是 DELETE 忘了加 WHERE,不然只能跑路了。
后来,随着我们有了专门的运维人员,搭建了 SQL 审核平台,开发提交 SQL 之后,由负责人审核,通过之后再由运维人员执行,大大提高了线上操作的安全性。
SQL 审核,避免删库跑路!
三、备份
对于普通的业务性公司来说,最重要的资料莫过于数据库里的用户数据了,数据如果突然没了,那公司可能都得跟着完蛋,所以数据备份很重要。
我们公司最开始没有运维人员,全是晚上加班或者上线之前手动备份一下数据库,效率虽然低,但是至少做到了备份。
后来有了运维人员,备份都是自动操作了,但有一次发现一个问题,就是备份的时候,导致库锁死了,辛亏是个从库,主要是在内部系统使用。
做好数据库备份,一切都可以重来!
作为一个前端开发,也写过一点后台代码,我认为技术人员,即使不是后台开发人员,也应该多少了解一下 SQL,基本的增删改查学习一下,对平时的开发和查找问题好处多多。在此,我推荐「廖雪峰」老师的「SQL 教程」。
欢迎访问的个人博客:掘墓人的小铲子