Оптимизация Java DB: увеличение размер кэша страниц данных

Оптимизация Java DB - кэш страниц данных
Андрей Васенин

Андрей Васенин

Автор статьи. Сфера интересов: ИТ-специалист (программирование, администрирование, DBA). Кандидат экономических наук. Подробнее .

Вы можете увеличить размер кэша страниц данных базы данных Java DB, который состоит из страниц данных, хранящихся в памяти. Когда Derby может получить доступ к странице базы данных из кэша, а не считывать ее с диска, он может возвращать данные намного быстрее.

 Размер кэша страниц данных по умолчанию составляет 1000 страниц. В многопользовательской среде или в среде, в которой пользователь обращается к большому количеству данных, увеличьте размер кэша. Его размер настраивается с помощью свойства derby.storage.pageCacheSize. Для получения дополнительной информации о том, как установить это свойство и как оценить использование памяти, см. Раздел "Свойства Derby" справочного руководства Java DB.

Примечание: Ядро Derby может выполняться даже с небольшим объемом памяти и даже с небольшим кэшем страниц данных, хотя может работать плохо. Увеличение объема памяти, доступной для Derby, и увеличение размера кэша страниц данных повышают производительность.

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

Эти кэши включают:

  • Кэш страницы (пользовательских данных) (описанный выше)

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

  • Кэш словаря данных

Кэш, в котором хранится информация, хранящаяся в системных таблицах. Вы можете заполнить этот кэш запросом, который выбирает из часто используемых пользовательских таблиц.

  • Кэш инструкций

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

Настройка размера страниц базы данных

Придерживайтесь 4K в качестве размера страницы (по умолчанию и размера, используемого операционными системами), если:

  • Вы храните большие объекты.
  • У вас очень большие таблицы (более 10 000 строк).
  • Для очень больших таблиц большие страницы уменьшают количество необходимых операций ввода-вывода.

Для приложений только для чтения используйте большой размер страницы (например, 32 КБ) с параметром pageReservedSpace, равным 0.
Возможно, вам придется поэкспериментировать с размером страницы, чтобы выяснить, что лучше всего подходит для вашего приложения и базы данных.

 

Компромиссы производительности больших страниц

Использование больших страниц базы данных повышает производительность базы данных, в частности сокращает время ввода-вывода. Ядро Derby автоматически подстраивается под размер страницы базы данных. Если у вас есть длинные столбцы, размер страницы по умолчанию для таблицы равен 32768 байт. В противном случае по умолчанию используется 4096 байт. Вы можете изменить размер страницы базы данных по умолчанию с помощью свойства derby.storage.pageSize, описанного в разделе «Свойства Derby» Справочного руководства по базе данных Java DB. Например:

derby.storage.pageSize=8192

Примечание. Для больших страниц базы данных требуется больше памяти.

Если размер строки большой, обычно размер страницы должен быть соответственно большим. Если размер строки небольшой, размер страницы должен быть маленьким. Еще одно грубое правило: постарайтесь иметь не менее 10 строк среднего размера на странице (до 32 КБ).

Используйте больший размер страницы для таблиц с большими столбцами или строками. Максимально допустимый размер страницы составляет 32 КБ.

Однако в некоторых приложениях используются строки, размер которых значительно различается от пользователя к пользователю. В такой ситуации трудно предсказать, как размер страницы повлияет на производительность.

Если таблица содержит один большой столбец вместе с несколькими маленькими столбцами, поместите большой столбец в конец строки, чтобы часто используемые столбцы не перемещались на дополнительные страницы. Не индексируйте большие столбцы.

Внимание! Большой размер страницы для индексов значительно повышает производительность.

Когда большой размер страницы не повышает производительность

  • Выборочные запросы. Если запросы вашего приложения очень избирательны и используют индекс, большой размер страницы не дает особых преимуществ и потенциально снижает производительность, поскольку чтение страницы большего размера занимает больше времени.

Когда большой размер страницы нежелателен

  • Ограниченная память. Большие страницы базы данных сокращают время ввода-вывода, поскольку Derby может получить доступ к большему количеству данных с меньшим количеством операций ввода-вывода. Однако для больших страниц требуется больше памяти. Derby по умолчанию выделяет большое количество страниц базы данных в своем кэше страниц. Если размер страницы большой, системе может не хватить памяти.

    Вот примерное руководство: если система работает под управлением Windows 95 и имеет более 32 МБ (или Windows NT и имеет более 64 МБ), вероятно, будет выгоднее использовать 8 КБ, а не 4 КБ в качестве размера страницы по умолчанию.

    Используйте флаг -mx в качестве дополнительного параметра для JVM, чтобы предоставить JVM больше памяти при запуске.

    Например:

    java -mx64 myApp
  • Ограниченное дисковое пространство.  Если вы не можете позволить себе накладные расходы минимум на две страницы на таблицу, сохраняйте размер страниц небольшим.

Вас заинтересует / Intresting for you:

Оптимизация Java DB: создайте ...
Оптимизация Java DB: создайте ... 497 просмотров Андрей Васенин Sat, 17 Dec 2022, 17:27:15
Оптимизация Java DB: не позвол...
Оптимизация Java DB: не позвол... 391 просмотров Андрей Васенин Sat, 17 Dec 2022, 17:11:42
Оптимизация Java DB: настройка...
Оптимизация Java DB: настройка... 465 просмотров Андрей Васенин Mon, 19 Dec 2022, 09:06:55
Оптимизация Java DB: Используй...
Оптимизация Java DB: Используй... 446 просмотров Андрей Васенин Mon, 19 Dec 2022, 09:08:50
Войдите чтобы комментировать

iVoron аватар
iVoron ответил в теме #10937 1 год 3 мес. назад
Благодарю за статью! Четко разложил)
Doc аватар
Doc ответил в теме #10836 1 год 4 мес. назад
Как раз задумался по настройке производительности Java DB. Увеличения кэша страниц - да, с этого и попробую начать. Спасибо. Как говориться, статья в тему!)