Mysql最佳实践

生产环境安全修改MySQL表名

方案一:表重命名

操作简单,适合低峰期无业务数据产生的系统。

阶段一:准备工作

  1. 选择低峰期操作:在业务低峰期(如凌晨)执行变更

  2. 备份数据

    CREATE TABLE old_table_backup_YYYYMMDD LIKE original_table;
    INSERT INTO old_table_backup_YYYYMMDD SELECT * FROM original_table;
  3. 通知相关团队:告知开发、运维、DBA等团队变更计划

阶段二:创建新表并同步数据

  1. 创建新表结构

    CREATE TABLE new_correct_name LIKE original_table;
  2. 同步数据

    INSERT INTO new_correct_name SELECT * FROM original_table;

阶段三:切换表名(关键步骤)

  1. 使用原子性RENAME操作

    RENAME TABLE original_table TO new_table;

    这个操作是原子性的,不会造成数据丢失

阶段四:后续处理

  1. 更新应用程序

    • 部署使用新表名的代码版本

    • 确保所有SQL查询已更新为新表名

方案二:代码兼容新旧表

适合业务不能中断的系统。

阶段一:做好代码兼容

try{
    //使用新表读写数据
} catch(表不存在 e){
    //使用旧表读写数据
}

    阶段二:部署代码

            对兼容的代码进行发布部署。

    阶段三:备份数据

    1. 选择低峰期操作:在业务低峰期(如凌晨)执行变更

    2. 备份数据

      CREATE TABLE old_table_backup_YYYYMMDD LIKE original_table;
      INSERT INTO old_table_backup_YYYYMMDD SELECT * FROM original_table;
    3. 通知相关团队:告知开发、运维、DBA等团队变更计划

    阶段四:切换表名(关键步骤)

    1. 使用原子性RENAME操作

      RENAME TABLE original_table TO new_table;

      这个操作是原子性的,不会造成数据丢失

    ShardingSphere对Mysql分库分表 和 Elasticsearch 在分页查询时的性能对比和底层区别

    先说性能结论:Elasticsearch 的分页机制和 ShardingSphere 分库分表框架的分页逻辑有相似之处,但 ES 的实现更高效。

    1. 核心相似点:分布式查询的必然代价

        第一阶段无论是 ShardingSphere 还是 Elasticsearch,在分布式环境下查询第 N 页数据时,必须让所有分片/分库返回足够的数据(如第1000页需合并 from + size 条数据)。
        第二阶段协调节点/中间件需要全局排序和过滤,最终返回正确范围内的数据。
        我以带条件查询第1000页的10条数据为例:
        ShardingSphere:向每个分库发送 LIMIT 0, 10000(from=9990, size=10),合并后取全局第9990~9999条。
        Elasticsearch:向每个分片请求本地排序后的前10000条数据(from + size),合并后取第9990~9999条。

    2、Elasticsearch 的优化策略1仅传输文档元数据

        ES在第一阶段仅查询文档元数据(非完整数据),各分片仅返回文档的_id和排序字段,不返回 _source,协调节点确定最终10条结果后,才去对应分片拉取完整数据,减少90%以上的数据传输量(尤其是字段很多的场景)。
        ShardingSphere:每个分库分表需要返回完整的行数据,网络和内存开销大。

    3、Elasticsearch 的优化策略2支持 search_after 避免深分页

        使用 search_after 通过排序值定位本次需要查询的数据范围,相比每个分片需要查询第1000页的前10000条数据,search_after 只需要每个分片查询给定 search_after 值的下个满足条件的10条数据。
        ShardingSphere:没有原生等效于 search_after 的机制,深度分页只能依赖 LIMIT offset, size。

    4、Elasticsearchd 的优化策略3分布式计算能力

        分片级别缓存、更高效的优先级队列内存合并算法,支持并行化处理分片返回的结果。
        ShardingSphere:依赖数据库单机执行能力,合并逻辑在框架层或中间件层实现,性能受限于JDBC。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值