SQL自动化上线之alter语句(二)
这是学习笔记的第 1844篇文章
对于DDL的自动化上线,其实是一件可行的事情,尤其是对于create语句来说。
在完成了第一波的自动化上线工作之后,我们采用了异步任务的方式来对接多条SQL的执行,把执行结果持久化在表里,可以后续进行结果稽核和分析。整体来说,效率提升比较明显,最近的一个需求处理,从任务发起到任务结束,整个过程持续时间13秒。
所以对于alter的自动化上线排上了日程 ,其实alter语句的自动化上线步骤远比create语句要复杂几个数量级。所以在这方面的思考需要根据业务现状进行梳理。
所以在制定变更策略之前,我们需要考虑几个维度,SQL维度,数据维度和变更维度,通过这几个维度能够梳理出变更的策略。
首先是SQL维度,我们常见的alter操作的一个基本梳理如下:
alter-add-col
alter-modify-col
alter-change-col
alter-drop-col
alter-add-index
alter-drop-index
alter-modify-index
alter-rename-table
alter-rename-col
这些是我们的工作中比较常见的变更SQL,对于alter的复杂之处就在于它还包含有一些列的变更(增加,修改,删除)
首先第一个就是SQL审核,alter的审核参考点比较少,这一块已有的工具的支持都比较薄弱,需要持续改进和优化。
对于数据维度,目前暂定了三个维度:
小表
小于10万数据
中型表
数据量在10-100万
大型表
数据量在100万以上
对于变更维度,目前暂定了以下的几类操作方式:
备份表结构:需要考虑备份表结构,这种可以考虑做成在线或者离线文件的形式。
备份表数据:对于数据的备份是应该考虑的,尤其是对于drop类的操作。
人工介入变更:有些操作我们还是需要人工来介入,需要协调时间和影响范围。
自动变更:自动变更是通用的需求,可以满足大部分的业务场景。
工具介入变更:有些变更涉及的表比较大的时候,可以考虑使用pt工具来完成自动变更。
从结构化思维来梳理,会梳理出一些针对性的变更方案。
以上可以作为大家在实际工作中的参考。
相关链接: