ВЛИЯНИЕ ПРИМЕНЕНИЯ ИНДЕКСОВ НА ПРОИЗВОДИТЕЛЬНОСТЬ БАЗЫ ДАННЫХ В INTERBASE 6.5

Селми Уафик, Ю.В. Ладыженский
Донецкий национальный технический университет

В данном докладе будет рассмотрено применение индексов при создании и работе с базами данных и их влияние на производительность приложений. Индекс представляет собой упорядоченный указатель на записи в таблице. Индекс содержит значения одного или нескольких полей в таблице и адреса страниц данных, на которых располагаются эти значения. Другими словами, по значению поля (или полей), входящего в индекс, при помощи индекса можно быстро найти то место в таблице, где располагается запись, содержащая это значение. Для оценки производительности базы данных в InterBase 6.5 были разработаны следующие тесты:

Разработка теста на вставку записей Тест на вставку записей состоит в следующем: создается новая таблица, которая заполняется случайными записями по 10 тысяч записей, 20 тысяч и т.д. до 200 тысяч записей. Общее количество записей 2 миллиона 110 тысяч. Были созданы следующие варианты теста на вставку записей:

Результаты теста (табл.1) показали, что самой производительной (минимальное время) будет вставка записей без индексов. Затем, по возрастанию затраченного времени, следуют вставка с дезактивацией и активацией индексов, вставка с удалением и восстановлением индексов и самым длительным процессом является вставка записей в таблицу с применением индексов. Разработка теста на удаление записей Следует прежде всего отметить, что происходит при выполнении операции удаления в InterBase. В силу архитектуры многоверсионности записей удаление записей не приводит к их действительному удалению. Просто рядом с версией записи пишется ее новая версия, но без значений полей, а с индикатором удаления. При этом, понятно, занимаемое таблицей дисковое пространство (количество страниц) может увеличиться. Далее, в силу уже правил сборки мусора, записи будут реально удалены (удалены предыдущие версии и delete-stub) только при попытке чтения этих записей. Поэтому реальное время удаления записей из таблицы будет временем, затраченным на сборку мусора. Тест на удаление записей имеет два способа реализации:

Результаты теста

Алгоритм теста в обоих случаях примерно одинаков. Сначала применяется операция select count (backup/restore) с засеканием потраченного на работу процедуры времени. Затем происходит непосредственно удаление с помощью команды delete. После завершения выполнения команды (как правило, это занимает сравнительно малый промежуток времени) снова запускается команда select count (backup/restore) с учетом времени – происходит сборка мусора. Реальное время сборки мусора можно найти с помощью вычитания первого затраченного времени из второго. Тест на удаление 210 тысяч записей из таблицы с наличием индексов и без индексов представлен в табл. 2.
Результаты теста

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

  1. Ковязин А.Н., Востриков С.М. Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase, Firebird, Yaffil. – М.:Питер, 2005. – 496 с.
  2. www.ibase.ru