2013-09-17 3 views
0

У меня естьMySQL Performance НАГРУЗКИ Data

`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 только установлен и имеет по умолчанию конфигурации за столом MySQL. Я попытался вставить данные в таблицу, используя 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) 

Потребовалось 55 секунд для вставки 1500 записей. Таблица имеет 512000 записей. Я думаю, что время занято слишком долго, учитывая тот факт, что у меня может быть гораздо больше записей в живой базе данных, а также мне нужен уникальный ключ и еще один индекс. На данный момент я удалил эти 2, чтобы упростить эту проблему. Просьба предложить, как я могу улучшить производительность MySQL. Я не сделал каких-либо изменений в конфигурации MySQL после установки

ответ

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. Каких компьютер вы используете? Эта виртуальная машина, какой-то веб-сервер или домашний компьютер? 1500 записей за 55 секунд очень медленные, он должен работать быстрее даже с индексами, автозагрузкой и всеми проверками. Может быть, у вас плохой драйвер диска, а диск работает в режиме PIO вместо DMA или что-то еще?