MySQL Performance - PullRequest
       6

MySQL Performance

0 голосов
/ 20 апреля 2011

У нас есть хранилище данных с денормализованными таблицами в диапазоне от 500К до 6+ миллионов строк. Я разрабатываю решение для составления отчетов, поэтому мы используем подкачку базы данных из соображений производительности. Наши отчеты имеют критерии поиска, и мы создали необходимые индексы, однако производительность при работе с таблицами строк миллиона (-ов) низкая. Клиент настроен на постоянную осведомленность об общем количестве записей, поэтому мне нужно получить данные и количество записей.

Могу ли я сделать что-нибудь еще, чтобы помочь с производительностью? Я не MySQL dba, и он на самом деле ничего не предлагал, так что я не уверен, что он может сделать в конфигурации.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

Вы должны использовать «Секционирование»

Его главная цель - уменьшить объем считываемых данных для определенных операций SQL, чтобы общее время отклика уменьшилось.

См .:

http://dev.mysql.com/tech-resources/articles/performance-partitioning.html

0 голосов
/ 20 апреля 2011

Если вы разбиваете большие таблицы и сохраняете детали на разных серверах, ваш запрос будет выполняться быстрее.

см .: http://dev.mysql.com/doc/refman/5.1/en/partitioning.html

Также обратите внимание, что при использовании таблиц NDB вы можете использоватьКлючи HASH, которые ищутся за O (1) раз.

Количество строк, которое вы можете хранить в промежуточной таблице в отдельной таблице и обновлять ее.Например, в триггере after insert и after delete.
Несмотря на то, что триггер замедлится, удаляет / вставляет, но это будет распространяться во времени.Обратите внимание, что вам не нужно хранить все итоги в одной строке, вы можете хранить итоги для каждого условия.Примерно так:

table    field    condition    row_count
----------------------------------------
table1   field1   cond_x       10
table1   field1   cond_y       20

select sum(row_count) as count_cond_xy 
from totals where field = field1 and `table` = table1 
and condition like 'cond_%';
//just a silly example you can come up with more efficient code, but I hope
//you get the gist of it.

Если вы обнаружите, что всегда рассчитываете на одни и те же условия, это может ускорить ваш переработанный select count(x) from bigtable where ... с нескольких минут до мгновенного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...