soulhunter
Новичок
перегон данных между таблицами
Здравствуйте.
Ситуация такая:
БД - MySQL
Таблица links - 60 000 000 записей, MyISAM
Таблица temp_8403 - 15 000 000 записей, MyISAM
Делается вот такой запрос, перегоняются данные, часть инсертится часть апдейтится при встрече совпадающего по уникальному ключу:
INSERT INTO links (server_id, hash, path, size, extension, last_online, found)
SELECT 26, hash, path, size, extension, '2009-07-05 23:00:00', found
FROM temp_8403
ON DUPLICATE KEY UPDATE found = VALUES(found), last_online = '2009-07-05 23:00:00', path = VALUES(path)
Ранее (когда записей в таблице links было меньше) запрос нормально выполнялся в пределах 7 минут, с при достижении данных цифр в таблице links - запрос перестал выполняться вообще, то есть он тупо виснет навсегда и все.
Естественно, перед запросом делаю:
LOCK TABLES links_dc WRITE, temp_8403 READ
ALTER TABLE links_dc DISABLE KEYS
Настройки мускула:
#
# MyISAM specific options
#
key_buffer_size = 7G
read_buffer_size = 8M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 128M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_max_extra_sort_file_size = 10G
myisam_recover
Подскажите, в чем может быть причина тупого повисания данного запроса? на жестком диске места естественно придостаточно, оперативки 16гб
Хотя нет, поправочка. Все же запрос не повисает совсем, а просто выполняется очень долго. Ранее, как уже писал, он выполнялся порядка 8-10 минут, теперь от 45 минут в лучшем случае и выше до 2часа+. Это произошло после увеличения объема данных до текущих цифр, в чем могло появиться узкое место, что запрос стал резко настолько дольше идти?
Здравствуйте.
Ситуация такая:
БД - MySQL
Таблица links - 60 000 000 записей, MyISAM
Таблица temp_8403 - 15 000 000 записей, MyISAM
Делается вот такой запрос, перегоняются данные, часть инсертится часть апдейтится при встрече совпадающего по уникальному ключу:
INSERT INTO links (server_id, hash, path, size, extension, last_online, found)
SELECT 26, hash, path, size, extension, '2009-07-05 23:00:00', found
FROM temp_8403
ON DUPLICATE KEY UPDATE found = VALUES(found), last_online = '2009-07-05 23:00:00', path = VALUES(path)
Ранее (когда записей в таблице links было меньше) запрос нормально выполнялся в пределах 7 минут, с при достижении данных цифр в таблице links - запрос перестал выполняться вообще, то есть он тупо виснет навсегда и все.
Естественно, перед запросом делаю:
LOCK TABLES links_dc WRITE, temp_8403 READ
ALTER TABLE links_dc DISABLE KEYS
Настройки мускула:
#
# MyISAM specific options
#
key_buffer_size = 7G
read_buffer_size = 8M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 128M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_max_extra_sort_file_size = 10G
myisam_recover
Подскажите, в чем может быть причина тупого повисания данного запроса? на жестком диске места естественно придостаточно, оперативки 16гб
Хотя нет, поправочка. Все же запрос не повисает совсем, а просто выполняется очень долго. Ранее, как уже писал, он выполнялся порядка 8-10 минут, теперь от 45 минут в лучшем случае и выше до 2часа+. Это произошло после увеличения объема данных до текущих цифр, в чем могло появиться узкое место, что запрос стал резко настолько дольше идти?