Обработка большого количества записей базы данных с пейджингом замедляется со временем

Я пытаюсь обрабатывать миллионы записей из моего стола (размер около 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
7
задан randomThought 13 September 2011 в 06:27
поделиться