Pull to refresh

Тормозной SQLite? Совсем нет!

Reading time2 min
Views30K
Как-то заинтересовавшись SQLite я решил проверить, а не будет ли оно быстрее MySQL, или хотя бы равным по скорости.
Я исходил из того, что SQLite скорее всего будет удобна для мелких таблиц, типа простых счетчиков посещений.
Поэтому провел тесты следующим способом: я пять раз мерял время по 100 циклов обновления записи в базе и пять раз по 100 чтения.
Код тут.

Итак, в статье убеждали: "В последнее время, вы, возможно, слышали о новом расширении для PHP: SQLite. Есть много причин, по которым SQLite может показаться лучшим достижением с тех пор, как научились резать хлеб. SQLite предлагает добротный SQL интерфейс к нерелятивистской базе данных и создаёт элегантную альтернативу громоздким интерфейсам других баз данных без потери функциональности или скорости, как можно было бы ожидать.".

Смотрим что же получилось по тестам…
     SQLite                    MySQL
		Запись
0.45911908149719	0.031841039657593
0.46412396430969	0.031555891036987
0.49027895927429	0.029323101043701
0.46884489059448	0.029382944107056
0.50253915786743	0.028644800186157
		Среднее
0.47698121070862	0.030149555206299

		Чтение
0.026177883148193	0.060520172119141
0.026360988616943	0.059216022491455
0.026273012161255	0.062637090682983
0.026113986968994	0.062775135040283
0.026944160461426	0.062674045562744
		Среднее
0.026374006271362	0.061564493179321


Удивительный провал на запись и преимущество в чтении. Однако спасибо ptalus, который пролил свет на это дело. В мануале написано, что для каждой записи файл открывается-закрывается, что и влечет за собой такую тормознутость, однако стоит добавить

sqlite_query($dbhandle, 'BEGIN;');
sqlite_query($dbhandle, 'COMMIT;');

вокруг запроса и время записи просто магически меняется.

Запись:
0.014724016189575
0.014418125152588
0.015676975250244
0.014610052108765
0.014219999313354
Среднее:
0.014729833602905

ЗЫ: тесты на время провожу в первый раз, подскажите, если где лоханулся.
Tags:
Hubs:
Total votes 55: ↑47 and ↓8+39
Comments74

Articles