Я пытаюсь обрабатывать миллионы записей из моего стола (размер около 30 ГБ), и я в настоящее время делаю его, используя пейджинг (MySQL 5.1.36) Отказ Запрос, который я использую в своем цикле для цикла, это
select blobCol from large_table
where name= 'someKey' and city= 'otherKey'
order by name
LIMIT <pageNumber*pageSize>, <pageSize>
Это работает отлично для 500K записей. У меня есть размер страницы 5000, которые я использую, и после страницы 100 запросы начнут резко замедляться. Первые ~ 80 страниц извлекаются через 2-3 секунды, но после того, как около 2-3 секунды каждая страница занимает около 30 секунд, чтобы получить, по крайней мере, до Page 200. Один из моих запросов имеет около 900 страниц, и это займет слишком долго.
The table structure is (type is MyISAM)
name char(11)
id int // col1 & col2 is a composite key
city varchar(80) // indexed
blobCol longblob
Что я могу сделать, чтобы ускорить это? Объяснение для запроса показывает это
select_type: SIMPLE
possible_keys: city
key : city
type: ref
key_len: 242
ref: const
rows: 4293720
Extra: using where; using filesort
, если он поможет, my.cnf для моего сервера (24 ГБ ОЗУ, 2 квадратных основных процессов) имеет эти записи
key_buffer_size = 6144M
max_connections = 20
max_allowed_packet = 32M
table_open_cache = 1024
sort_buffer_size = 256M
read_buffer_size = 128M
read_rnd_buffer_size = 512M
myisam_sort_buffer_size = 128M
thread_cache_size = 16
tmp_table_size = 128M
max_heap_table_size = 64M