DBA熬夜改表?这本MySQL实战手册让设计运维一步到位
|
那阵子连着下了几天雨,蚊子往灯上撞得噼里啪啦响。我蹲在塘边看增氧机转,胶鞋里进了水,凉飕飕贴着脚脖子。隔壁老张叼着烟凑过来,烟灰掉我裤腿上:“听说你们公司那DBA又熬夜改表了?”我低头拍裤腿,饲料袋子上的灰簌簌往下掉,“去年六月那回,差点把整个库搞崩。” 去年六月的雨比今年还邪乎。凌晨三点,监控警报突然炸锅——主库连接数飙到两千,慢查询堆得跟饲料堆似的。我原以为又是哪个接口没限流,结果扒开日志一看,好家伙,订单表被加了三个冗余索引,还有个外键约束没设级联删除。DBA小王蹲在机房地上改配置,键盘敲得比增氧机还响,脚边堆了五六个空红牛罐子。狗在门口叫,他头都不抬:“哥,这表设计得跟塘里乱长的水草似的,不拔根儿明天就得死。” 那批订单是前年老李那套系统迁过来的。老李当时拍着胸脯说“兼容性绝对没问题”,结果表结构里嵌了七层嵌套查询,光是关联表就二十多个。小王改完索引那晚,我蹲在塘边抽了两根烟,看他把旧表结构打印出来——A4纸叠了半尺厚,拿在手里跟捞网的杆子似的沉。后来我问他:“你咋知道这表得改?”他指了指打印纸:“你看这字段命名,‘user_info_v2_final_backup’,但凡带‘final’的,九成九得返工。” 前年老李那批苗更离谱。他非说“高密度养殖能多赚三成”,结果转肝期没控好料,应激反应一来,塘里浮头跟煮饺子似的。那会儿他蹲在塘边抽烟,烟头扔水里都能把鱼烫得跳起来。后来赔了差不多两万,他咬着牙说“下次一定按手册来”,结果今年又买了本《水产养殖技术大全》,翻了两页就扔饲料房了——书页上落的灰比饲料袋子还厚。 说回那本MySQL手册。小王改完表那周,我翻了他桌上的书,封皮都磨秃噜皮了。第三章讲索引设计,配的图是张鱼塘分布图,标注着“主键如塘基,索引如增氧管,多了会缠腿,少了会闷塘”。第五章讲分库分表,举的例子是“按地区分塘,北京订单放东塘,上海订单放西塘,跨塘查询得搭桥(中间件)”。我原以为这些比喻是扯淡,结果小王说:“你看这分页查询优化,跟撒料一个道理——不能一把全撒,得匀着来,不然前面吃撑了,后面饿肚子。”
文章配图,仅供参考 那阵子我天天蹲机房看小王改表。他改完索引改分区,改完分区改事务隔离级别,改完隔离级别改连接池配置。有天半夜我困得直点头,他突然把屏幕转过来:“哥,你看这慢查询,原来要三秒,现在三百毫秒,跟捞网捞鱼似的,一网下去全起来。”我盯着屏幕上的执行计划,突然想起老李那塘浮头的鱼——要是早按手册控料,哪用得着半夜开增氧机?后来那手册成了公司“镇库之宝”。新来的DBA小李,第一天上班就被塞了本翻旧的,封皮上还粘着半片鱼鳞。他翻了两页皱眉头:“这写的啥?‘表结构要像塘基,横平竖直别歪斜’?”小王叼着棒棒糖笑:“你按这来,至少不用像我似的,熬夜改表改到胶鞋里进水。” 现在看,优胜劣汰这事儿,在数据库跟在塘里一个理。老李那套“经验主义”,跟乱加索引的表一样,初期看着省事,后期全是坑。小王那本手册,把设计、运维、优化全串起来了,跟养鱼要控水、控料、控病一个路数——你省一步,后面得花十步补。那晚我蹲在塘边看星星,增氧机嗡嗡响,狗在门口叫,突然觉得,这手册跟老李那本《水产养殖技术大全》,差就差在“实操”俩字上——一个写的是“应该这么做”,一个写的是“这么做能活”。 前几天老李又来借手册,说想“重新开始”。我指了指饲料房那摞书:“你那本大全还在呢,灰都没擦。”他挠挠头:“那本太厚,看不懂。”我笑了——厚不厚不重要,能不能救命才重要。就像去年六月那晚,小王改完表,天都亮了,他蹲在机房门口伸懒腰,说:“哥,这表现在跟新塘似的,干净。”我瞅了眼塘里,水色清亮,鱼群游得欢实——可不就跟新表似的,没冗余,没死锁,跑得飞快。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


MySQL性能优化实战:8年脚本人亲授毫秒响应全链路方案