Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток!
Пара вопросов:
Если выполняется операция Insert или Update на таблице tablename типа MyIsam происходит ли подгрузка индексов этой таблицы в буфер(кэш) ключей, если они там не были до этого? Или же операции Insert и Update делают только запись в индексный файл и файл данных таблицы и не вызывают чтение индексного файла и соответственно не происходит его загрузки в кэш ключей?
И еще один вопрос - если размера выделенного под кэш ключей недостаточно для загрузки индекса то как при этом поступает mysql - вообще не грузит туда индекс или грузит его часть?
Спасибо!
Неактивен
Да, происходит — тех страниц индекса, которые обслуживают изменяемые строки
данных.
Собственно, на второй вопрос это тоже отвечает — индексы грузятся страницами,
а не целиком.
Неактивен
Спасибо paulus!
А если используется только оператор Insert, и нет изменяемых строк данных, а только добавляемые и не планируется к таблице применять операторы Delete,Select и Update, то в этом случае будет ли осуществляться подгрузка каких либо страниц индекса?
Просто таблица хоть и партицирована, но очень велика и индексы большие, и поэтому не хотелось бы отводить из за нее под кэш ключей много оперативной памяти, если тем более при одном Insert кэш ключей никогда ей и не понадобиться.
Спасибо.
Неактивен
А зачем тогда индексы вообще?
Для того, чтобы записать страницу индекса на диск, вам нужно:
1. Прочитать страницу индекса с диска, если ее нет в кэше
2. Добавить в памяти в эту страницу новые значения
3. Записать страницу на диск
Если памяти выделить мало — будете больше читать с диска, только и всего.
Общая производительность, конечно, снизится.
Неактивен