对表结构做修改时,如果数据量比较多,你们是怎么做的?

对表结构做修改时,会加写锁。那表结构修改的时候,不是很麻烦,如果里面有10亿条数据,不就得好几分钟不能像这个表写数据了

1 个回答

  • 孙慧
    世间万物,唯有过往伤人最深。
    是的,对包含大量数据的表进行结构修改时,确实会带来性能问题,特别是当表上的写锁(如 `LOCK TABLES`)被加上时,写操作将被阻塞。对于有10亿条数据的表,修改表结构可能会导致锁住的时间较长,进而影响应用的正常写入。 为了减少这种影响,以下是一些常用的应对策略: 1. **在线DDL操作**:某些数据库(如 MySQL 5.6 及以上版本)支持在线DDL功能,可以在不加写锁的情况下修改表结构(具体操作取决于你要修改的字段类型)。MySQL的 `ALTER TABLE` 支持 `ALGORITHM=INPLACE` 选项,可实现在线操作。 2. **临时表方案**:在高峰期外创建一个新的表结构,将数据迁移到新表,然后切换应用程序的表引用。虽然这种方案可能需要额外的空间,但可以减少在线修改时的锁定时间。 3. **数据库复制**:如果使用主从架构,可以在从库上先进行修改,再切换主从库角色,减少对主库的影响。 这些方法都可以帮助减少长时间写锁造成的影响,但具体方案需要根据你的业务场景、表结构修改的类型以及对系统可用性要求来选择。
    编辑于 2024-09-28 21:43 •IP属地 美国
    举报
    评论
    收藏