Урок чому sqlite такий повільний як прискорити

чому sqlite такий повільний? як прискорити?

Будь-, напевно, хто коли небудь використавши SQLite звернув увагу на швидкість відновлення (записи) даних, вона дуже мала, ну просто жах.
Через це відпадає бажання його використовувати. У кожного своя думка чому він такий повільний, найпоширеніше (найчастіше бачив) "У Куя руки криві". немає, з його руками, я сподіваюся, все в порядку. Справа в самому SQLite, а точніше в його налаштуваннях. Змінивши стандартні настройки можна домогтися космічних (в порівнянні зі стандартною швидкість) швидкостей.

Я ні кого не переконую використовувати SQLite
Я ні кого не переконую не використовувати SQLite

І так перше питання: чому sqlite такий повільний?

Повільний і дуже надійний. Спочатку все направлено на Безпека Даних, SQLite передає дані ОС (Операційна система) ОС обробляє дані, SQLite весь цей час чекає створивши свою "резервну копію" даних в ОЗУ (журнал пам'яті sqlite) і тільки після того як дані виявляться в базі на HDD продовжить працювати. Чималу роль відіграє HDD, його швидкість відбивається в повній мірі на "просте" SQLite в режимі очікування. Найвища безпеку даних, відключає можливість псування БД в будь-яких випадках (поломка ОС, падіння сервера, відключення живлення тощо).
Для чого в SA-MP така перестраховка. адже БД дуже мала, та й даних дуже мало. У мене сервер працював 1.5 року, за цей час БД "виросла" всього до 5Мб в ній було

як прискорити SQLite?

PRAGMA journal_mode = OFF;
PRAGMA synchronous = OFF;

journal_mode = OFF - відключаємо журнал, в ОЗУ нічого тепер зберігатися не буде, не буде створюватися резервний файл перед роботою з БД.
synchronous = OFF - робимо з "параноїка" "по ** Іста", в цьому режимі SQLite передає дані ОС і не чекаючи відповіді про "долю" даних продовжує працювати, повне відключення безпеки, відтепер ніякого відстеження записи даних. Максимальна продуктивність.
В даному режимі псування БД може наступити при аварії ОС, відключенні харчування і т.д якщо це сталося в момент поновлення даних. Навіть якщо ваш сервер раптово завершить роботу по якійсь причині, дані будуть збережені.
існує ще 2-ва режиму синхронізації FULL (за замовчуванням) і NORMAL - щось середнє продуктивність / безпеку.

тепер демонстрація приросту продуктивності

#include a_samp
#define LIMITS 500
new
sys_text # 91; 144 # 93 ;,
DB. sys_db.
testtime;

public
OnGameModeInit ()
<
sys_db = db_open ( "test.db");
db_query (sys_db. "CREATE TABLE IF NOT EXISTS` account` \
( `Id` INTEGER PRIMARY KEY,` valve` int) ");

db_query (sys_db. "PRAGMA synchronous = OFF; PRAGMA journal_mode = OFF;");

розбіг колосальний, я посміхався у всі 32 зуба коли вперше про це дізнався / побачив.

Ну от і все.
Тестируйте, користуйтеся, питайте. хай щастить

Поправки і тикання носом на помилки вітається.

Re: чому sqlite такий повільний? як прискорити?

не відіб'ється. тк навіть якщо твій сервер ДДОС і він "впав" машина хостера продовжує адже працювати, отже нічого страшного не може статися.
А ось якщо з ОС будуть проблеми або оффнут невчасно хост, то можуть виникнути проблеми і їх можна вирішити, причому легко.

якби kye був китайцем. китайський павн:
  • Схожі статті