Mysql海量数据经常有下面这些操作,离被开除就不远了(持续更新)
目录
1. INSERT INTO SELECT
2. JOIN 多表连接查询
3. SELECT * 查询
4. ORDER BY 无索引
5. UPDATE 无条件更新
6. DELETE 操作删除所有记录
7. OR 连接条件查询
8. DISTINCT 操作
9. GROUP BY 操作
10. LIKE 操作
11. HAVING 子句
1. INSERT INTO SELECT
问题描述:INSERT INTO SELECT
语句通常用于将数据从一个表插入到另一个表。虽然这种方法在处理小规模数据时非常有效,但在海量数据处理时,可能会带来以下几个问题:
- 锁表问题:如果目标表没有适当的索引,
INSERT INTO SELECT
可能会对整个表进行锁定,导致性能瓶颈。 - 内存消耗问题:对于大量数据的插入,MySQL会将数据从源表提取并一次性插入目标表,可能会占用大量内存,特别是在数据量特别大的时候,甚至会导致OOM(Out of Memory)。
- 事务问题:如果源表和目标表处于不同的事务中,插入过程可能会受阻,特别是在使用InnoDB引擎时。
代替方案:
(1)分批插入
可以将海量数据的插入过程分批次