0

我有一个 MySQL 表

`id` bigint(20) NOT NULL AUTO_INCREMENT,
`stn_num` int(11) NOT NULL,
`rec_time` datetime NOT NULL,
`pval` float NOT NULL,
`sig` float DEFAULT NULL,
`bval` float DEFAULT NULL,
`rmode` char(1) NOT NULL,
`rserver` char(2) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`data_flag` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 

mysql 5.6.12 刚刚安装并具有默认配置。我尝试使用 LOAD DATA 将数据插入到表中。

LOAD DATA LOCAL INFILE 'dt1500.txt' IGNORE INTO TABLE my_data FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (stn_num,rec_time,pval,sig,bval,rmode,data_flag)

插入 1500 条记录需要 55 秒。该表有 512000 条记录。我想花费的时间太长了,考虑到我在实时数据库中可能有更多的记录,而且我需要一个唯一的键和另一个索引。我现在已经删除了这两个,只是为了简化问题。请建议我如何提高 MySQL 的性能。安装后我没有对 MySQL 配置做任何更改

4

1 回答 1

0
  1. 尝试禁用索引

    -- before import
    ALTER TABLE `my_data` DISABLE KEYS;
    
    -- after import
    ALTER TABLE `my_data` ENABLE KEYS;
    
  2. 您还可以关闭一些选项:

    -- before import
    SET FOREIGN_KEY_CHECKS = 0;
    SET UNIQUE_CHECKS = 0;
    SET AUTOCOMMIT = 0;
    
    -- after import
    SET UNIQUE_CHECKS = 1;
    SET FOREIGN_KEY_CHECKS = 1;
    COMMIT;
    
  3. 你用的是什么类型的电脑?这是虚拟机、网络服务器还是家用电脑?55 秒内 1500 条记录非常慢,即使使用索引、自动提交和所有检查,它也应该运行得更快。也许你有坏的磁盘驱动程序和磁盘工作在 PIO 模式而不是 DMA 或什么的?

于 2013-09-17T16:52:17.823 回答