Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

sqlite — какие минусы, кроме плюсов? (Г.О.)
Author Message
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Fri Apr 21, 2006 10:55 am (написано за 2 секунды)
   Post subject: sqlite — какие минусы, кроме плюсов?
Reply with quote

Добрый день!

Решил вплотную заняться SQLite. Почитал по ней документацию и статьи в инете. И если им верить, то вещь вообще фантастическая. И поддержка SQL тут тебе лучше чем в MySQL, и настройки простые, и пользовательские функции на PHP, и транзакции, и работает это все в разы быстрее чем другие. Т.е. все о чем может мечтать средний php-проект.

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

Если кто-то SQLite использует, поделитесь, пожалуйста, впечатлениями. Стоит ли бросать мускул ради этого?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Apr 25, 2006 3:14 pm (спустя 4 дня 4 часа 19 минут; написано за 1 минуту 55 секунд)
   Post subject:
Reply with quote

Про то, что sqLite быстрее MySQL - это сказки. Возможно, на каких-то запросах она показывает лучшую производительность, но когда речь заходит о серьезных выборках, тут уже будет отставание. Насколько я понимаю, главная проблема в том, что MySQL может кэшировать данные между запросами, т.к. она запущена постоянно, а sqLite - нет.

К тому же sqLite есть только в PHP5.

Но, вообще-то, для небольших проектов sqLite должна быть чертовски удобной штукой...
Back to top
View user's profile Send private message Send e-mail
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Tue Apr 25, 2006 3:21 pm (спустя 6 минут; написано за 2 минуты 4 секунды)
   Post subject:
Reply with quote

Дмитрий Котеров, спасибо за информацию.

Я тут решил сам немного потестить:
Code (php): скопировать код в буфер обмена
$db = sqlite_open( 'db.db' );
sqlite_query( $db, 'create table test (one)' );
for ( $i = 0; $i < 10000; $i++ )
  sqlite_query( $db, 'insert into test (one) values("qwertyuiopasdfghjkl")' );
Данный сценарий обрывается через 30 секунд по таймауту, а в базу заносится около 350 записей. Это у меня что-то не так или она везде так тормозит?
Back to top
View user's profile Send private message
gong
Заглянувший



Joined: 29 Apr 2006
Posts: 1
Карма: 2
   поощрить/наказать

Location: msk

PostPosted: Sat Apr 29, 2006 11:27 pm (спустя 4 дня 8 часов 5 минут; написано за 10 минут 21 секунду)
   Post subject:
Reply with quote

Г.О. wrote:
Дмитрий Котеров, спасибо за информацию.

Я тут решил сам немного потестить:
Code (php): скопировать код в буфер обмена
$db = sqlite_open( 'db.db' );
sqlite_query( $db, 'create table test (one)' );
for ( $i = 0; $i < 10000; $i++ )
  sqlite_query( $db, 'insert into test (one) values("qwertyuiopasdfghjkl")' );
Данный сценарий обрывается через 30 секунд по таймауту, а в базу заносится около 350 записей. Это у меня что-то не так или она везде так тормозит?
Тормозит? Отнюдь. Надо просто поинтересовать природой вопроса.

web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html

Совет 3.1: используйте BEGIN TRANSACTION и END TRANSACTION.

Так как у меня нет PHP5, а только PHP4 (на 64-битной платформе пятёрка косячит с моими базами), то я скачал бинарник SQLITE под Линукс (200 килобайт), развернул и отлинковал:
Code (any language): скопировать код в буфер обмена
$ wget http://www.sqlite.org/sqlite3-3.3.5.bin.gz

$ gunzip sqlite3-3.3.5.bin.gz

$ ln -s sqlite3-3.3.5.bin sqlite
Теперь возьмём Ваш код, уберём лишек, добавим лог, который потом будем стравливать sqlite через пайп:
Code (php): скопировать код в буфер обмена
<?php

// $db = sqlite_open( 'db.db' );
// sqlite_query( $db, 'create table test (one)' );

echo (www.php.net/echo) "create table test (one);\n";

echo (www.php.net/echo) "BEGIN;\n";
for ( $i = 0; $i < 1000000; $i++ )
  echo (www.php.net/echo) "insert into test (one) values(\"qwertyuiopasdfghjkl\");\n";
echo (www.php.net/echo) "END;\n";

?>
Миллион записей, 54000037 байт.
Code (any language): скопировать код в буфер обмена
$ time php go.php  >a.sql

real 0m9.294s
user 0m1.893s
sys  0m7.166s

$ time php go.php  >a.sql

real 0m5.814s
user 0m1.290s
sys  0m4.516s

$ sync

$ time php go.php  >a.sql

real 0m5.793s
user 0m1.283s
sys  0m4.486s
Вообщем, генерация нашего лога - от 6 до 9 секунд. cat a.sql /dev/null - практически мгновенно, оно у нас в кэше (real 0m0.021s).
Code (any language): скопировать код в буфер обмена
$ time cat a.sql | sqlite db.db

real 0m27.213s
user 0m25.356s
sys  0m1.146s

$ rm db.db

$ time cat a.sql | sqlite db.db

real 0m29.519s
user 0m26.970s
sys  0m1.045s
30 секунд на вставку миллиона записей - это много или мало?

www.sqlite.org/cvstrac/wiki?p=SpeedComparison
Back to top
View user's profile Send private message
Г.О.
Участник форума



Joined: 22 Feb 2006
Posts: 378
Карма: 13
   поощрить/наказать

Location: Ленинград

PostPosted: Tue May 02, 2006 9:16 am (спустя 2 дня 9 часов 48 минут; написано за 25 секунд)
   Post subject:
Reply with quote

Quote:
30 секунд на вставку миллиона записей - это много или мало?
Ну, уже лучше )

Да, матчасть надо учить...
Back to top
View user's profile Send private message
werand
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue May 15, 2007 2:59 pm (спустя 1 год 13 дней 5 часов 43 минуты; написано за 16 секунд)
   Post subject:
Reply with quote

привет, ребята.
я - Андрей.
вы тут про sqlite3 говорите.
такой вопрос. можно ли организовать запрос, что-то типа "SELECT <name> FROM <table> ORDER BY <name>", так чтобы сортировка была без учёта регистра. (с разными языками)
пробовал алгоритмическим путём - долго.

пожалуйста ответьте мне на мыло werand85@mail.ru
заранее спасибо.

С уважением
Андрей.
Back to top
~AquaZ~
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Dec 14, 2009 1:50 pm (спустя 2 года 6 месяцев 29 дней 22 часа 51 минуту; написано за 44 секунды)
   Post subject:
Reply with quote

Тут ещё один нюанс есть - Linux работает в среднем в ~2 раза быстрее тупой винды.
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML