Mysql
 sql >> база данни >  >> RDS >> Mysql

Подобряване на производителността на MySQL при Run-Once заявка с голям набор от данни

Моето предчувствие е, че с unsigned int и varchar 40 (особено varchar!) сега имате ОГРОМЕН първичен ключ и това прави вашия индексен файл твърде голям, за да се побере в каквато и RAM памет да имате за Innodb_buffer_pool. Това би накарало InnoDB да разчита на диск за размяна на индексни страници, докато търси и това е МНОГО търсения на диск и не много работа на процесора.

Едно нещо, което направих за подобен проблем, е да използвам нещо средно между наистина естествен ключ и сурогатен ключ. Ще вземем 2 полета, които всъщност са уникални (едно от които също беше varchar) и в слоя на приложението ще направим хеш с фиксирана ширина MD5 и ще използваме THAT като ключ. Да, това означава повече работа за приложението, но прави много по-малък индексен файл, тъй като вече не използвате поле с произволна дължина.

ИЛИ, можете просто да използвате сървър с тонове RAM и да видите дали това прави индекса да се побере в паметта, но аз винаги обичам да направя „хвърляне на хардуер в него“ в краен случай :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Условни ограничения на външния ключ

  2. Групиране на OHLC-Stockmarket данни в множество времеви рамки - Mysql

  3. Как да експортирате арабски текст от MySQL база данни в csv с помощта на жаба за MySQL?

  4. Вземете общите отработени часове за един ден mysql

  5. Достъпът е отказан за потребител 'test'@'ip' (използвайки парола:ДА)