MySQL 插入10万条数据性能分析
    		       		warning:
    		            这篇文章距离上次修改已过441天,其中的内容可能已经有所变动。
    		        
        		                
                
-- 创建测试表
CREATE TABLE `test_table` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `data` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
-- 插入10万条数据
INSERT INTO `test_table` (`data`) VALUES
('Sample data'),
('Sample data'),
...
('Sample data'); -- 重复10万次在实际应用中,直接插入10万条数据可能会非常慢,因为每次插入都会触发磁盘I/O和数据的索引更新。为了提高性能,可以考虑以下方法:
- 批量插入:使用一条INSERT语句插入多行数据,减少与数据库的通信次数。
- 禁用索引:在插入前暂时禁用索引,插入完成后重新创建索引。
- 禁用自动提交:可以通过SET autocommit=0;来禁用自动提交,这样可以减少事务的开销。
- 调整批大小:根据服务器的配置和资源,适当调整批量插入的数据行数。
示例批量插入代码:
-- 禁用自动提交
SET autocommit=0;
 
-- 禁用索引
ALTER TABLE `test_table` DISABLE KEYS;
 
-- 批量插入数据
INSERT INTO `test_table` (`data`) VALUES
('Sample data'),
('Sample data'),
...
('Sample data'); -- 每次插入适当数量的行
 
-- 重新启用索引
ALTER TABLE `test_table` ENABLE KEYS;
 
-- 提交事务
COMMIT;
 
-- 重新启用自动提交
SET autocommit=1;注意:在实际操作中,应该根据服务器的硬件和MySQL的配置来调整上述参数,以达到最佳性能。
评论已关闭