SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.04.2007 19:02:44

anky
Участник
Откуда: Киев
Зарегистрирован: 17.04.2007
Сообщений: 12

Индексация и скорость вставки

Как я слышал, существует некая закономерность, что излишняя индексация таблицы может повредить быстродействию работы СУБД, при большом количестве изменяющих (инсерты, апдейты, дилиты) запросов.

Однако при моих подсчетах, соотнешение чтения/изменение данных из таблицы будет примерно 1/16... Существует ли какая-то математическая формула или закономерность, по котороый можно было бы эффективно вычислить, поможет ли ндексация в этом случае для повышения быстродействия ил итолько усугубит его.

Когда то давно работал с ораклом, местный админ сказал, что это можно проверить только методом научного тыка - тобишь проиндексировать - посмотреть время выполнения запросов. убрать индексацию - и посмотреть время запросов...


Жадный коллекционер CPU тиков smile

Неактивен

 

#2 18.04.2007 00:24:47

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Индексация и скорость вставки

Излишняя индексация таблицы, безусловно вредит быстродействию.
Но замедляется лишь скорость обработки данных при добавлении/обновлении/удалении
данных в ключевых полях. Скорость выборки данных, разумеется, не уменьшится.

Конкретной формулы нет, есть некие наводящие соображения:
1. Если весь индекс располагается в памяти - его обработка происходит очень
быстро. Если индекса в памяти нет - вы добавляете лишний disk seek для чтения
страницы индекса в память (и последующего обновления индекса в нем). Если при этом
сервер настроен так, что он каждое изменение индекса записывает на диск, то будет
еще и второй seek на запись.

2. Обновление 1-2 строк обычно не заметно для процессорного времени (можете посмотреть
замечательную Java-демонстрацию того, как работают индексы).
При большом объеме данных требуется больше ресурсов для балансировки индекса
(в том числе и возможные disk seeks на чтение соседних страниц индекса).

3. Составной индекс, как правило, может использоваться для запросов по первому столбцу
этого индекса. Разумное создание индексов может сократить их количество.

4. Обычно, Вы можете себе позволить достаточно большое время на добавление/изменение
данных (ведь пользователь как таковой изменяет обычно не более 1 записи за раз), но выборки
данных должны производиться очень быстро (т.к. нужны группировки, объединения и проч.).
Если Вы сталкиваетесь с таким количеством обновлений таблиц, которые отражаются заметно
на производительности сервера, попробуйте воспользоваться MySQL Cluster.

Неактивен

 

#3 18.04.2007 16:18:40

anky
Участник
Откуда: Киев
Зарегистрирован: 17.04.2007
Сообщений: 12

Re: Индексация и скорость вставки

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


Жадный коллекционер CPU тиков smile

Неактивен

 

#4 18.04.2007 20:31:48

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Индексация и скорость вставки

Картинка java-плагин требует. Очень поучительная вещь, показывает, что сохранять B-tree сбалансированным не так уж сложно, как на первый взгляд может показаться.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson