OceanBase教程FG146-OceanBase在线DDL使用实战
目录大纲
Part01-基础概念与理论知识
1.1 在线 DDL 概述
在线 DDL 是 OceanBase 提供的一种 DDL 执行机制,允许在不阻塞业务操作的情况下执行 DDL 语句。在线 DDL 可以减少 DDL 操作对业务的影响,提高系统的可用性。
1.2 在线 DDL 原理
在线 DDL 的原理是:
- 创建新的表结构或索引
- 在后台异步复制数据
- 使用日志记录数据变更
- 在适当的时机切换到新的表结构或索引
Part02-生产环境规划与建议
2.1 在线 DDL 使用场景
在线 DDL 使用场景:
- 添加新列
- 修改列类型
- 添加或删除索引
- 修改表结构
- 添加或删除约束
2.2 性能影响分析
在线 DDL 对性能的影响:
- CPU 开销:在线 DDL 会占用一定的 CPU 资源
- IO 开销:数据复制会增加 IO 操作
- 内存开销:在线 DDL 会占用一定的内存资源
- 锁开销:在线 DDL 会在切换阶段短暂持有锁
Part03-生产环境项目实施方案
3.1 在线 DDL 语法
在线 DDL 语法:
— 添加列
ALTER TABLE fgedu_order ADD COLUMN status VARCHAR(20) DEFAULT ‘active’ ONLINE;
— 修改列类型
ALTER TABLE fgedu_order MODIFY COLUMN amount DECIMAL(10,2) ONLINE;
— 添加索引
CREATE INDEX idx_user_id ON fgedu_order(user_id) ONLINE;
— 删除索引
DROP INDEX idx_user_id ON fgedu_order ONLINE;
3.2 在线 DDL 参数配置
配置在线 DDL 参数:
obclient -h192.168.1.10 -P2881 -uroot@sys -p
— 设置在线 DDL 并发度
ALTER SYSTEM SET online_ddl_concurrency = 4;
— 设置在线 DDL 批量大小
ALTER SYSTEM SET online_ddl_batch_size = 1000;
— 查看在线 DDL 配置
SHOW PARAMETERS LIKE ‘online_ddl%’;
3.3 在线 DDL 监控
监控在线 DDL 执行情况:
obclient -h192.168.1.10 -P2881 -uroot@sys -p
— 查看在线 DDL 执行状态
SHOW PROCESSLIST WHERE COMMAND = ‘Online DDL’;
— 查看在线 DDL 进度
SELECT * FROM oceanbase.__all_ddl_job;
Part04-生产案例与实战讲解
4.1 在线 DDL 实战案例
在线 DDL 实战案例:
— 添加列
ALTER TABLE fgedu_order ADD COLUMN create_time DATETIME DEFAULT CURRENT_TIMESTAMP ONLINE;
— 查看执行结果
SHOW CREATE TABLE fgedu_order;
— 输出:包含新添加的 create_time 列
— 添加索引
CREATE INDEX idx_create_time ON fgedu_order(create_time) ONLINE;
— 查看执行结果
SHOW INDEX FROM fgedu_order;
— 输出:包含新创建的 idx_create_time 索引
4.2 在线 DDL 性能优化实战
在线 DDL 性能优化实战:
— 优化在线 DDL 并发度
ALTER SYSTEM SET online_ddl_concurrency = 8;
— 优化在线 DDL 批量大小
ALTER SYSTEM SET online_ddl_batch_size = 5000;
— 执行大表在线 DDL
ALTER TABLE fgedu_order ADD COLUMN update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ONLINE;
— 监控执行进度
SELECT * FROM oceanbase.__all_ddl_job WHERE table_name = ‘fgedu_order’;
Part05-风哥经验总结与分享
5.1 常见问题与解决方案
- 问题:在线 DDL 执行时间过长
- 解决方案:优化在线 DDL 参数,选择业务低峰期执行
- 问题:在线 DDL 执行失败
- 解决方案:检查表结构、权限、存储空间等,重新执行
5.2 性能优化建议
- 选择业务低峰期执行在线 DDL 操作
- 优化在线 DDL 参数,提高执行效率
- 对于大表,考虑分批执行在线 DDL 操作
- 监控在线 DDL 执行情况,及时发现和处理问题
- 结合实际业务场景,合理使用在线 DDL 特性
,风哥提示:。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
