Spec-Zone .ru
спецификации, руководства, описания, API
|
В большинстве случаев можно оценить производительность запроса, считая поиск на диске. Для маленьких таблиц
можно обычно находить строку в одном поиске на диске (потому что индексирование, вероятно, кэшируется). Для
больших таблиц можно оценить, что, используя B-дерево индексирует, Вы нуждаетесь в этом, многие стремятся найти
строку: log(
. row_count
) / log(index_block_length
/ 3 * 2 / (index_length
+ data_pointer_length
)) + 1
В MySQL индексировать блок обычно - 1 024 байта, и указатель данных обычно - четыре байта. Для таблицы с 500,000
строками с длиной значения ключа трех байтов (размер MEDIUMINT
), формула указывает log(500,000)/log(1024/3*2/(3+4))
+ 1
= 4
ищет.
Это индексирует, потребовал бы хранения приблизительно 500 000 * 7 * 3/2 = 5.2MB (принятие типичного отношения заливки индексного буфера 2/3), таким образом, у Вас, вероятно, есть большая часть индексирования в памяти и так нуждаются только в одном или двух вызовах, чтобы считать данные, чтобы найти строку.
Для записей, однако, Вы нуждаетесь четыре, ищут запросы, чтобы найти, куда поместить новое, индексируют значение, и обычно два стремится обновить индексирование и записать строку.
Отметьте, что предыдущее обсуждение не означает, что Ваша производительность приложения медленно ухудшается
журналом N
. Пока все кэшируется ОС или сервером MySQL, вещи становятся
только незначительно медленнее, поскольку таблица становится больше. После того, как данные становятся слишком
большими, чтобы кэшироваться, дела начинают идти намного медленнее, пока Ваши приложения не связываются только
поиском на диске (которые увеличиваются журналом N
). Чтобы избежать
этого, увеличьте ключевой размер кэша, поскольку данные растут. Для MyISAM
таблицы,
ключевым размером кэша управляют key_buffer_size
системная переменная. См. Раздел
8.11.2, "Настраивая Параметры Сервера".