|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Кто что скажет про производительность сабжевых БД в роли ОЛТП сервера. В частности, планируется использовать её для хранения истории биллинга. Т.е. постоянно будет только поступать информация и проводится простейшее суммирование значений. В данный момент база находится на Oracle 10g. Посоветовали эти СУБД, как более шустрые на элементарных операциях к базе большого объёма (INSERT, UPDATE). Если есть варианты лучше - выслушаю с превеликим удовольствием. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2008, 17:30 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Плюнь в того кто тебе это посоветовал. SQLite это встраиваемая база. Для микро задач. Вот недельную-месячную историю продаж на ней хранить запросто. Запихнуть ее в кассовый терминал для хранения чеков - идеально. Заменять ею большую базу - идиотизм. GigaBASE сам не щупал, но судя по описанию - так себе. Любительская поделка. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2008, 17:42 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Чем можно сконвертнуть данные из Access 2002 в Sqlite? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2008, 18:12 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
White OwlПлюнь в того кто тебе это посоветовал. SQLite это встраиваемая база. Для микро задач. Вот недельную-месячную историю продаж на ней хранить запросто. Запихнуть ее в кассовый терминал для хранения чеков - идеально. Заменять ею большую базу - идиотизм. GigaBASE сам не щупал, но судя по описанию - так себе. Любительская поделка. Спасибо за ответ, но судя по всему придется проводить стресс-тест этих СУБДшек. Если интересует, то потом отпишусь о результатах... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.04.2008, 01:55 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Отпишите. -- ~PPA() {} // ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2008, 18:57 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
White OwlПлюнь в того кто тебе это посоветовал. SQLite это встраиваемая база. Для микро задач. Вот недельную-месячную историю продаж на ней хранить запросто. Запихнуть ее в кассовый терминал для хранения чеков - идеально. Заменять ею большую базу - идиотизм. SQLite на средних базах данных (до 100 гиг) отлично себе работает. В биллинге необходимо разделить данные по месяцам и при построении отчетов attach-ть нужные базы. Ну, если у вас за месяц набегает более 100 гиг данных, придется еще что-то придумать. P.S. Сказанное относится к ФС ext3 и грамотно настроенной базе. Про fat, ntfs и прочие поделия ничего сказать не могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2008, 12:37 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG White OwlПлюнь в того кто тебе это посоветовал. SQLite это встраиваемая база. Для микро задач. Вот недельную-месячную историю продаж на ней хранить запросто. Запихнуть ее в кассовый терминал для хранения чеков - идеально. Заменять ею большую базу - идиотизм. SQLite на средних базах данных (до 100 гиг) отлично себе работает. В биллинге необходимо разделить данные по месяцам и при построении отчетов attach-ть нужные базы. Ну, если у вас за месяц набегает более 100 гиг данных, придется еще что-то придумать. P.S. Сказанное относится к ФС ext3 и грамотно настроенной базе. Про fat, ntfs и прочие поделия ничего сказать не могу. Угу угу. Только вот SQLite (по крайней мере та версия шо я гонял) создает по файлу на каждую транзакцию. Создает и удаляет, создает и удаляет Ну и для кучи, БД на любой DML блокирувается ексклюзивна :) Забавно будет посмотреть ЭТО в биллинге. Про GigaBase врать не буду, но еенная сестренка FastDB тоже очень смешная :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2008, 09:07 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan)Только вот SQLite (по крайней мере та версия шо я гонял) создает по файлу на каждую транзакцию. Создает и удаляет, создает и удаляет Ну и для кучи, БД на любой DML блокирувается ексклюзивна :) Забавно будет посмотреть ЭТО в биллинге. И чем вам этот файл так не нравится? Операционная система, веб-сервер и, к примеру, постгрес тоже много чего создают и удаляют, просто вы об этом не догадываетесь. В последнем вот только недавно проматывание счетчика транзакций на читающих транзакциях устранили. Кроме того, в эскулайте можно выбрать режим persist, в котором этот файл не удаляется. Не нужна вам целостность базы при аварийном отключении сервера - можете вообще отказаться от использования файла журнала, в скорости существенно выиграете. Блокировка базы имеет свои преимущества - на SATA-дисках много эффективнее записывать на диск в одном процессе, так что эскулайт на таких дисках дает очень высокую производительность. Версионные СУБД на SATA при сотне-другой транзакций в секунду упираются в производительность дисков. Эскулайт, при полной блокировке базы, в единицу времени больше транзакций выполняет. И зачем вам DML в больших количествах в биллинге - может, просто термин нравится? :-) Кстати, на многоядерных серверах эскулайт линейно масштабируется - если вам это о чем-то говорит. А для обработки блокировок мьютексы используются - вы не поверите, но это стандартный подход, и другие СУБД тоже не обходятся без обработки блокировок. Также и жесткий диск для чтения/записи должен позиционировать головки, да еще и дубли записанной информации создать, да еще проверить корректность записи... так что видимость одновременной записи множеством потоков создается контроллером диска и в софте это стоит учитывать. Да, сразу добавлю - разрабатывать на эскулайте сложнее, следует учесть многое из того, что в других СУБД уже сделано в движке, но в результате эффективность системы при отсутствии администрирования окупают затраты на разработку. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2008, 11:52 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGДа, сразу добавлю - разрабатывать на эскулайте сложнее, следует учесть многое из того, что в других СУБД уже сделано в движке , но в результате эффективность системы при отсутствии администрирования окупают затраты на разработку. Если не трудно, в хотябы крадце, о каких нюансах идет речь? Ибо сам в ближайшее время собираюсь активно использовать sqlite. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 03:46 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGИ чем вам этот файл так не нравится? Да в общем-то всем нравится :) только при частой фиксации транзакций (что для биллинга характерно), постоянное создание/удаление файла просаживает производительность на столько, что SQLite в основном занимается только этим Производительность падает на порядки. Можно конечно сделать транзакции подлинее, но тогда в полный рост втсает второй фактор ;) MBG Операционная система, веб-сервер и, к примеру, постгрес тоже много чего создают и удаляют, Дык СУБД тем и отличается от файловой системы, что старается эти вещи оптимизировать. А фиксация транзакций - бутылочное горло для любой известной мне РСУБД :( Например Oracle ничего не создает и не удаляет, а перезаписывает поверх старого REDO. И уж разумеется не занимается маразмом с созданием удалением файла на каждом commit-е Кстати, а чего там Postgress постоянно создает/удаляет ? Удивите меня MBG просто вы об этом не догадываетесь. ага ;) MBG В последнем вот только недавно проматывание счетчика транзакций на читающих транзакциях устранили. В SQLite ? А Вы твердо уверены, что сие есть Бобро, а не уродливый костыль ??? MBG Кроме того, в эскулайте можно выбрать режим persist, в котором этот файл не удаляется. Не нужна вам целостность базы при аварийном отключении сервера - можете вообще отказаться от использования файла журнала, в скорости существенно выиграете. Ага, конечно. Зачем нам целостность та ? Вот persist конечно несколько более умно, надо посмотреть на досуге MBG Блокировка базы имеет свои преимущества - на SATA-дисках много эффективнее записывать на диск в одном процессе, так что эскулайт на таких дисках дает очень высокую производительность. И свои недостатки :) Два DML не могут выполняться одновременно Т.е. все DML-и выстраиваются в очередь. Для производительности исключительно полезно MBG Версионные СУБД на SATA при сотне-другой транзакций в секунду упираются в производительность дисков. Эскулайт, при полной блокировке базы, в единицу времени больше транзакций выполняет. Проводили тестирование ? С чем сравнивали ? Oracle, Postgress, IB, MS SQL 2005 ??? С небольшим приложением в виде результатов тестирования, заявление звучало бы менее голословно ;) Кстати, дабы исключить влияние механизмов версионности, возможно разумнее сравнивать блокировочники с блокировочниками ??? MBG И зачем вам DML в больших количествах в биллинге - может, просто термин нравится? :-) Ага, нравится :) Только ими можно сказать и занимаюсь Очень интересно, посмотреть на биллинг БЕЗ insert-ов и update-ов Кстати, под биллингом я имею в виду Internet. Телефонный тоже можно, если он поддеживает prepaid MBG Кстати, на многоядерных серверах эскулайт линейно масштабируется - если вам это о чем-то говорит. Как только чем нибудь подкрепите свои слова, сразу же скажет. Не в первый раз уж слышу сказки про линейную масштабируемость, да только видеть ее никогда не доводилось :( Кстати, количество процессоров далеко не самый главный фактор в производительности СУБД MBG А для обработки блокировок мьютексы используются - вы не поверите, но это стандартный подход, и другие СУБД тоже не обходятся без обработки блокировок. Также и жесткий диск для чтения/записи должен позиционировать головки, да еще и дубли записанной информации создать, да еще проверить корректность записи... так что видимость одновременной записи множеством потоков создается контроллером диска и в софте это стоит учитывать. Да Вы шо o O Может просто сравним цифры ??? MBG Да, сразу добавлю - разрабатывать на эскулайте сложнее, следует учесть многое из того, что в других СУБД уже сделано в движке, но в результате эффективность системы при отсутствии администрирования окупают затраты на разработку. Не скрою (с) к нулевому администрированию SQLite ближе чем Oracle Если бы она еще и работатала ... Собственно я не хочу сказать, что SQLite это плохо. У нее есть своя ниша (Web, CD-справочники), но биллинг ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 08:13 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan)... Насчет проматывания счетчика транзакций - это в постгресе, разумеется, в блокировочнике такого отродясь не бывает. Создание временных файлов постгрес любит, посмотрете его механизм работы с временными таблицами/видами/индексами... Просто вы не знаете о работе СУБД, и полагаете, что эскулайт делает лишние операции, а остальные "святым духом" работают. Для поддержания целостности данных все СУБД делают примерно одно и то же, разница собственно только между блокировочниками и версионниками. Ну и в СУБД типа оракла и постгреса базовый код довольно давно написан, что тоже плохо. Удаление файла под линуксом операция не затратная, так что эскулайт может себе это позволить, как и постгрес (см. выше). Ну, для недоделанных ФС есть режим persist. Сравнивал с постгресом - требования оракла к железу кажутся мне фантастически завышенными, ну а эмэсэскуэль мало того что проприетарный, так еще и не работает на линуксе или соляре, так что явно не вариант. Цифры для сравнения можете поискать в инете, мои результаты показывают ускорение до 60х при переходе с постгреса на эскулайт (понятно, архитектуру тоже менял, благо в эскулайте есть возможность подключать другие базы к текущей, да еще и данные хранятся раз так в 5 компактнее). Кстати, в постгресе были применены в т.ч. и нетривиальные методы оптимизации, см. http://postgrestips.blogspot.com/2007/06/blog-post.html И тем не менее, после достижения порога производительности в постгресе удалось получить огромный выигрыш на эскулайт. Задачка, кстати, связана с аналихзом больших выборок (несколько гигабайт данных в одном запросе - такая бизнес-специфика). Насчет DML - вы серьезно считаете, что в биллинге вам так и нужны тысячи и более записей в секунду? Данные пакетно сбрасываются с коллекторов, если посчитаете, то телефонный биллинг на 10 миллинов звонков в месяц создает не слишком большую нагрузку - в месяце около 2,5 миллиона секунд, так что это получится в среднем 4 звонка в секунду, нагрузка в пике зависит от характеристик вашей системы, но не более чем на два порядка превзойдет среднюю, т.е. до 400 звонков в секунду. Если данные аккумулировать на коллекторах и сбрасывать, например, раз в секунду, то это будет 1 пакетная в ставка в секунду (продолжительностью несколько миллисекунд). Чего пугаетесь? Про масштабируемость - при запуске N экземпляров программы на N процессоров/ядер масштабируемость и в самом деле хороша, что вас тут удивляет? В своем движке создаете пул процессов эскулайт и получаете хорошую производительность на многоядернике, в отличие от клиент-серверов, где все зависит от их создателей и проблемы масштабируемости до сих пор не решены до конца. Можно написать нечто аналогичное мускулю на эскулайт, но нельзя добиться от мускуля реализации возможностей эскулайт, так что эскулайт более эффективный движок. Интересно, вы яву считаете примитивным микроязыком, раз на ней можно делать мидлеты для сотовых телефонов?.. Пора бы осознать, что встраиваемые решения зачастую превосходят своих созданных в серверной отрасли коллег. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 10:22 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
BION MBGДа, сразу добавлю - разрабатывать на эскулайте сложнее, следует учесть многое из того, что в других СУБД уже сделано в движке , но в результате эффективность системы при отсутствии администрирования окупают затраты на разработку. Если не трудно, в хотябы крадце, о каких нюансах идет речь? Ибо сам в ближайшее время собираюсь активно использовать sqlite. См. оффсайт и рассылку sqlite-users. Вкратце - работая с эскулайт, надо иметь более высокую грамотность, чем при работе с монстрами СУБД, которые зачастую представляют "вещь в себе". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2008, 10:25 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Как я уже говорил выше, я не считаю SQLite "плохой" СУБД. Более того, я считаю ее лучшей в классе встраиваемых СУБД, поддерживающих SQL и поставляемых в открытых исходных кодах. Речь, таким образом идет о том, что она могла бы быть (и вероятно будет) ГОРАЗДО лучше, если избавится от некоторых детских болезней (разумеется все сказанное исключительно IMHO). Ниже приводятся данные о производительности SQLite в зависимости от частоты фиксации транзакций (исходные тексты теста прилагаются) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Столь существенное снижение производительности (почти в 300 раз), вызвано ИСКЛЮЧИТЕЛЬНО неудачным (и легко исправляемым) архитектурным решением - ведением отдельного (не особенно при том лаконичного) ФАЙЛА журнала на каждую выполняемую транзакцию. Отговорки на тему дешевизны операций создания/удаления файла в *nix-системах не выглядят убедительными, когда речь идет о СУБД, одним из достоинств которой является кроссплатформенность. Когда речь заходит об относительно легко устраняемом архитектурном дефекте, советы поставить "правильную" операционную систему (а при невозможности этого, отказаться от целостности данных) выглядят несколько странно. Кроме того, сколь бы не дешева была операция, она никак не дешевле чем ее НЕ выполнение. Зачем тратить время на то, чего делать не нужно ??? Ни одна из известных мне СУБД (включая упоминавшийся здесь Postgress) не занимается созданием/удалением файлов в рамках выполнения фиксации/отката транзакции. Думаю, что глупо спорить с тем, что ничем не оправданная идея сделать бутылочное горло записи REDO еще более узким исключительно НЕУДАЧНА. Ситуация с монопольным блокированием БД при выполнении DML, разумеется менее однозначна. Более того, для Embedded БД такое решение более чем разумно. Действительно, зачем тратить ресурсы на блокировки уровня строк, если БД используется в однопользовательском режиме? Такие СУБД как TimesTen например, поддерживают режимы монопольного блокирования БД не только при выполнении DML, но и на время ЛЮБОЙ незавершенной транзакции (в том числе состоящей только из операций чтения). Но это именно режимы, а не единственно возможное поведение. И эти режимы практически непригодны для многопользовательской работы (клановые мантры о необходимости гораздо большей квалификации при работе с SQLite чем при работе с Oracle, прошу также оставить в стороне. ЛЮБАЯ работа требует высокой квалификации и профессионализма). Другой причиной неудобства этого режима (не очень существенной для Embedded, но вполне весомой для OLTP) является теоретическая невозможность горизонтального масштабирования (увеличением количества потоков) БД, работающей в таком режиме. Для меня было приятным сюрпризом узнать, что TimesTen (к примеру), в рамках разумного количества потоков (до 10) масштабируется вполне линейно (разумеется не столь ощутимо как Oracle). Разумеется, TimesTen СОВЕРШЕННО не масштабируется в режиме монопольного блокирования БД :) Пикантность ситуации с SQLite добавляет то, что по всей видимости (помимо прочего) необходимость монопольного блокирования БД, при выполнении DML напрямую связана с пионерским (в смысле передовым конечно ;) ) решением ведения отдельного файла на каждую транзакцию. Впрочем, это всего лишь моя теория. Таким образом, я не веду речь о том, достаточна или нет производительность SQLite для некоего сферического биллингового приложения (хотя и считаю, что с учетом озвученных ранее цифр совершенно недостаточна для средненького Internet-биллинга или биллинга сотовой телефонии). Биллинг биллингу рознь, и почему бы не использовать SQLite в биллинге проводной телефонии, с оказанием исключительно postpaid-услуг? Разумеется, зайди речь о выборе для такого применения SQLite vs Gigabase, мои предпочтения (по ряду причин) оказались бы на стороне первой. Но ее производительность могла бы быть еще лучше. И кому от этого было бы плохо? P.S. Кстати, как связано устранение проматывания счетчика в Postgress с созданием/удалением файлов ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 08:08 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan)... Странная у вас таблица. Эскулайт в секунду в 1-й транзакции выполняет около 50 000 операций insert в секунду, а у вас - несколько тысяч предел. То, что вы говорите про архитектуру эскулайт, не соответствует действительности. Проверьте работу с прагмой PRAGMA journal_mode = PERSIST; и увидите, что операция создания и последующего удаления файла журнала мало отличается по производительности от работы с постоянным файлом журнала (по крайней мере, на ext3). Какой смысл критиковать поведение программы, которое зависит от ваших настроек?.. Хотите постоянный журнал - пользуйтесь, в чем вопрос-то. Резкое снижение производительности в режиме autocommit вызвано отнюдь не операциями создания/удаления журнала, а операцией сброса дискового буфера на диск для гарантированнной фиксации изменений - при сбое питания или ПО все закоммиченные данные наверняка будут целы (если конечно не слетит ФС, или не "умрет" дисковая система). Запустите ваш тест с прагмой PRAGMA synchronous = OFF; и убедитесь, что без такой гарантии целостности операции записи выполняются примерно в 50 - 100 раз быстрее. Далее, не нравится вам, что при записи блокируются операции чтения - используйте прагму PRAGMA read_uncommitted = 1; при которой можно одновременно и писать и читать. Я не зря говорил про необходимую квалификацию - не надо гадать, надо знать. С учетом озвученных выше замечаний, производительности вполне хватает для большинства применений. Еще замечу, что ваш тестовый пример плох - более адекватным будет использование ANSI C кода и компилятора GCC. Всякие вижуальные среды используют множество настроек оптимизации и проч., что приводит к непредсказуемым последствиям. При использовании GCC все ваши опции будут заданы как аргументы в командной строке, а в вашем примере настройки частично находятся в файле проекта в неудобочитаемом виде, а частично - в менюшках вашей вижуал студии или что у вас там. В рассылке эскулайт пользователи периодически жалуются на проблемы с эскулайт, скомпиленным в вижуал студии, после чего им советуют для начала сбросить все флаги оптимизации. P.S. В постгресе проматывание счетчика связано с операциями записи в буфера ОЗУ и на диск, что весьма неприятно и на нагруженной системе приводит к высокой нагрузке на дисковую подсистему, при этом создается больший объем и соответственно большее количество файлов журнала (при сотнях транзакций в секунду это ощутимо). Специально для этой операции файлы не создаются, насколько мне известно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 11:19 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG ... правильные системы, правильные компиляторы, сакральные знания + с потолка взятые 50000 Все как обычно ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 12:27 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) MBG ... правильные системы, правильные компиляторы, сакральные знания + с потолка взятые 50000 Все как обычно Мне казалось это тривиальным, но могу и объяснить. Итак, 100 000 вставок в таблицу с триггером за 2 секунды (сами поделите первое число на второе? если что, см. мой предыдущий пост): Код: plaintext 1. 2. 3. 4. 5.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Вот такой проц на тестовой машинке: Код: plaintext 1. 2. 3. 4. 5.
Выбран тест, не зависящий от жесткого диска, впрочем, результаты в одной транзакции для базы на диске практически идентичны. Насчет компилятора - результаты теста должны быть воспроизводимы. GCC позволяет воспроизвести тест на любой другой машине, вижуал среды - нет. Причины я объяснил в предыдущем посте. Насчет файловой системы - знать особенности используемой ФС полезно, а иногда и необходимо. Я пользуюсь ext3 и учитываю ее особенности. Если вы не знаете, как работает ваша ФС, это ваши проблемы. Если вы не знаете размер кластера вашей ФС, то у вас почти любая СУБД будет работать неэффективно. Постом ранее я вам привел набор полезных для повышения эффективности работы базы директив с пояснениями. Если вы хотите разобраться, то попробуете сами. Если нет - не отнимайте время у себя и других людей. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 14:26 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGВыбран тест, не зависящий от жесткого диска, впрочем, результаты в одной транзакции для базы на диске практически идентичны. Ясен перец :) а теперь сделай транзакции поменьше, чтобы на OLTP было похоже, а не на заливку CDR-а ;) MBG Насчет компилятора - результаты теста должны быть воспроизводимы. GCC позволяет воспроизвести тест на любой другой машине, вижуал среды - нет. Причины я объяснил в предыдущем посте. Насчет файловой системы - знать особенности используемой ФС полезно, а иногда и необходимо. Я пользуюсь ext3 и учитываю ее особенности. Если вы не знаете, как работает ваша ФС, это ваши проблемы. Если вы не знаете размер кластера вашей ФС, то у вас почти любая СУБД будет работать неэффективно. Постом ранее я вам привел набор полезных для повышения эффективности работы базы директив с пояснениями. Если вы хотите разобраться, то попробуете сами. Если нет - не отнимайте время у себя и других людей. Все это прекрасно и замечательно, но передо мной ставилась задача определить кто из Embedded/IMDB быстрее на Windows из под MSVC :) Задача выбора правильной ОС не стояла. Есть мысли, что улучшить в МОЕМ коде, чтобы работала пошустрее на Windows ? P.S. Кстати BDB с TimesTen сделали SQLite как стоячую ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 15:02 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
И еще, ДРУГ, мне надоели твои намеки на мои знания/незнания особенностей работы FS, Postgress и т.п. Будь проще ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 15:05 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) Все это прекрасно и замечательно, но передо мной ставилась задача определить кто из Embedded/IMDB быстрее на Windows из под MSVC :) Задача выбора правильной ОС не стояла. Есть мысли, что улучшить в МОЕМ коде, чтобы работала пошустрее на Windows ? А вот такую постановку задачи вы озвучили впервые :-) Я решаю малость иную задачу - какая среда выполнения и архитектура приложения наиболее эффективны для эскулайт. Для клиентов на винде и винмобайл я особых настроек не использовал, разве что использовать постоянный файл журнала и размер страницы памяти выставить 4096 байт (по умолчанию стоит 1024 и это очень мало). У ntfs есть какие-то настройки производительности, покрутите, fat и vfat использовать не стоит. А сервер все же лучше под линуксом делать. Ну, повторяющиеся запросы само собой лучше prepared делать. Если не хотите менять или настраивать ОС и ФС, то остальное зависит больше от архитектуры приложения, тут уж вам должно быть виднее. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 15:22 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGЕсли не хотите менять или настраивать ОС и ФС, то остальное зависит больше от архитектуры приложения, тут уж вам должно быть виднее. Ну то есть фактически: RAID и persist (+ prepared) Как я и думал. На Windows не вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 16:33 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan)P.S. Кстати BDB с TimesTen сделали SQLite как стоячую TimesTen делает как стоячих и Oracle и MSSQL :) Другое дело, что область применения у TimesTen существенно уже. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 17:04 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) MBGЕсли не хотите менять или настраивать ОС и ФС, то остальное зависит больше от архитектуры приложения, тут уж вам должно быть виднее. Ну то есть фактически: RAID и persist (+ prepared) Как я и думал. На Windows не вариант При чем тут RAID? Прагму размера страницы укажите при создании базы. Журнал сделать persist тоже можно на любой системе. А запросы надо делать prepared вообще-то к любой базе, это на уровне кода реализуется и от ОС не зависит. Сам использую эскулайт на винмобайл, несколько десятков клиентских инсталляций уже года три как, всем доволен. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 17:29 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Grami Gluk (Kazan)P.S. Кстати BDB с TimesTen сделали SQLite как стоячую TimesTen делает как стоячих и Oracle и MSSQL :) Другое дело, что область применения у TimesTen существенно уже. TimesTen это что-то вроде berkeleydb? Тогда уж tokyocabinet смотрите, там на ноуте выходит более миллиона вставок в секунду. Только это совершенно другой класс СУБД. А berkeleydb еще и администрирования требует, что для встраиваемого решения не есть хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 17:34 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG Grami Gluk (Kazan)P.S. Кстати BDB с TimesTen сделали SQLite как стоячую TimesTen делает как стоячих и Oracle и MSSQL :) Другое дело, что область применения у TimesTen существенно уже. TimesTen это что-то вроде berkeleydb? Тогда уж tokyocabinet смотрите, там на ноуте выходит более миллиона вставок в секунду. Только это совершенно другой класс СУБД. А berkeleydb еще и администрирования требует, что для встраиваемого решения не есть хорошо. TimesTen - IMDB. Очень шустрая, но платная. Не Embedded, крутится отдельным сервисом. Очень продуманная, кроссплатформенная. BDB тож ничо, но естественно помедленнее. И то и другое для телекома самое то. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 17:49 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) TimesTen - IMDB. Очень шустрая, но платная. А, я такие даже не рассматриваю. Интересуют только с открытыми исходниками, чтоб допилить в любой момент можно было или хотя бы заглянуть и увидеть что как работает. Когда есть код я могу гарантировать клиентам решение их задач, а с закрытыми решениями все плохо - далеко не все разработчики готовы даже за деньги поправить/доделать что-то, и сам не сделаешь. Для телекома скорее уж mnesia хороша, для того она и создана :-) Но и она кстати для дискового хранения использует берклидб, токиокабинет или эскулайт. Как вариант, использую in-memory hash для хранения очень часто изменяемых данных, а при старте/останове сервера читаю/пишу их в эскулайт базу. Впрочем, это имеет смысл, если одновременно работающих пользователей около полутысячи и более, иначе не стоит и заморачиваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2008, 18:26 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGДля телекома скорее уж mnesia хороша, для того она и создана :-) Но и она кстати для дискового хранения использует берклидб, токиокабинет или эскулайт. Как вариант, использую in-memory hash для хранения очень часто изменяемых данных, а при старте/останове сервера читаю/пишу их в эскулайт базу. Впрочем, это имеет смысл, если одновременно работающих пользователей около полутысячи и более, иначе не стоит и заморачиваться. Знаешь, моих заказчиков *nix-ы в ступор вгоняют (они вообще фанаты дотнету), а ты мне про эрланговые надстройки над BDB Интересно было бы конечно пощупать, но уж больно оторвано от моей реальной жизни. Использовать SQLite как дисковое хрнанилище для IMDB - вполне себе подход, даже возражать не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 08:03 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
GramiTimesTen делает как стоячих и Oracle и MSSQL А какая из них Embedded или IMDB ? ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 08:05 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) Знаешь, моих заказчиков *nix-ы в ступор вгоняют (они вообще фанаты дотнету), а ты мне про эрланговые надстройки над BDB Имхо, сейчас все ИТ-подразделения умеют обращаться с юниксом/линуксом и солярисом. Хотя мне тут сложно оценивать - большинство людей из моего круга общения пользуются линуксом как на работе, так и дома, а статистика почему-то показывает преобладание виндоус :-) Эрланг кроссплатформенный, кстати. Что касается СУБД без поддержки SQL, на практике выходит, что хранение в них сериализованных многомерных структур данных и распаковка/запаковка их на уровне приложения на существенно "просаживают" производительность, так что эффективнее пользоваться SQL и наборами функций по обработке blob-полей согласно специфике приложения. В какую базу дампать на диск in-memory структуры, так это и вовсе вопрос религии, например, эскулайт имеет отличный тиклевский биндинг (в отличии от берклидб, к примеру) и позволяет легко писать пользовательские функции на С. Собственно, эскулайт в дефолтной поставке это лишь минимальный движок, к которому следует дописать нужную функциональность. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 08:58 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGИмхо, сейчас все ИТ-подразделения умеют обращаться с юниксом/линуксом и солярисом. Хотя мне тут сложно оценивать - большинство людей из моего круга общения пользуются линуксом как на работе, так и дома, а статистика почему-то показывает преобладание виндоус :-) Эрланг кроссплатформенный, кстати. Честно ? Спим и видим как перейти на разработку под никсы, но кто девушку кушает, тот ее и танцует :( Про эрланг знаю, было даже у начальства желание пощупать моими руками мнезию, но как то заглохло MBG Что касается СУБД без поддержки SQL, на практике выходит, что хранение в них сериализованных многомерных структур данных и распаковка/запаковка их на уровне приложения на существенно "просаживают" производительность, так что эффективнее пользоваться SQL и наборами функций по обработке blob-полей согласно специфике приложения. Ну BDB прямо скажем не особенно просаживает, с учетом того, что OLTP запросы то как правило не особо сложные. Хранится структура и все дела. Кроме того ключ до 2G это сильно. MBG В какую базу дампать на диск in-memory структуры, так это и вовсе вопрос религии, например, эскулайт имеет отличный тиклевский биндинг (в отличии от берклидб, к примеру) и позволяет легко писать пользовательские функции на С. Собственно, эскулайт в дефолтной поставке это лишь минимальный движок, к которому следует дописать нужную функциональность. Ч учетом того, что BDB не SQL-БД, биндинг звучит несколько загадочно ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 09:08 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG[quot Gluk (Kazan)]Кроме того, в эскулайте можно выбрать режим persist, в котором этот файл не удаляется. . режим persist пока очень сырой (недавно появился). я получил из-за него существенную просадку производительности на простых select-ах с индексом по BLOB полю. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 09:20 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan)Про эрланг знаю, было даже у начальства желание пощупать моими руками мнезию, но как то заглохло Не очень давно mnesia unlimited вышла, там ограничения на объем данных в узле поснимали, красота. В апстрим собирались включить, но не смотрел, включили или еще нет. Gluk (Kazan) Ну BDB прямо скажем не особенно просаживает, с учетом того, что OLTP запросы то как правило не особо сложные. Хранится структура и все дела. Кроме того ключ до 2G это сильно. Это смотря где - в документообороте, к примеру, при прохождении документом очередной инстанции идет проверка всего документа на валидность плюс генерация информации для отчетов. Большой ключ на практике мало интересен - при извлечении десятка тысяч документов при построении отчета какой объем данных надо будет поднять с таким ключом? :-) В реальном времени, скажем прямо, немыслимо делать подобный анализ. Gluk (Kazan) Ч учетом того, что BDB не SQL-БД, биндинг звучит несколько загадочно Биндинг можно к любой динамической библиотеке сделать :-) Свои функции дописать тоже никто не мешает, но уж больно много кода получается для berkeleydb для выборок (понятно, что эмулировать sql-запросы сишным кодом не самая лучшая затея). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 09:42 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
PPA MBG[quot Gluk (Kazan)]Кроме того, в эскулайте можно выбрать режим persist, в котором этот файл не удаляется. . режим persist пока очень сырой (недавно появился). я получил из-за него существенную просадку производительности на простых select-ах с индексом по BLOB полю. В документации же ясно сказано, что этот режим следет использовать на платформах, где операция удаления файла намного более затратная, нежели забивание первого блока файла нулями. Если на вашей платформе это не так, то режим persist вам не подходит. "The PERSIST journaling mode is useful as an optimization on platforms where deleting a file is much more expensive than overwriting the first block of a file with zeros." P.S. "Если ничего больше не помогает, прочтите наконец документацию!" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 09:50 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGВ документации же ясно сказано, что этот режим следет использовать на платформах, где операция удаления файла намного более затратная, нежели забивание первого блока файла нулями. Если на вашей платформе это не так, то режим persist вам не подходит. Гмм. а зачем забивать блок нулями ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 10:59 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGЭто смотря где - в документообороте, к примеру, при прохождении документом очередной инстанции идет проверка всего документа на валидность плюс генерация информации для отчетов. Я еще недостаточно спятил, чтобы писать документооборот на BDB :) MBG Биндинг можно к любой динамической библиотеке сделать :-) Свои функции дописать тоже никто не мешает, но уж больно много кода получается для berkeleydb для выборок (понятно, что эмулировать sql-запросы сишным кодом не самая лучшая затея). Я под биндингом понимаю параметризованные SQL-запросы ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 11:01 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) MBGЭто смотря где - в документообороте, к примеру, при прохождении документом очередной инстанции идет проверка всего документа на валидность плюс генерация информации для отчетов. Я еще недостаточно спятил, чтобы писать документооборот на BDB :) На клиент-серверных СУБД пара тысяч одновременных пользователей уже требуют офигенного железа. Плюс указанным СУБД необходим постоянный мониторинг и настройка, которые для необслуживаемых серверов отсутствуют (клиенту устанавливается и настраивается железо+софт и дальше все должно годами работать, пока железо не сдохнет, бэкапы забираются по сети с помощью rsync, к примеру). Gluk (Kazan) MBG Биндинг можно к любой динамической библиотеке сделать :-) Свои функции дописать тоже никто не мешает, но уж больно много кода получается для berkeleydb для выборок (понятно, что эмулировать sql-запросы сишным кодом не самая лучшая затея). Я под биндингом понимаю параметризованные SQL-запросы Имеется в виду интерфейс определенного языка программирования к динамической библиотеке. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 11:18 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGНа клиент-серверных СУБД пара тысяч одновременных пользователей уже требуют офигенного железа. MTS-а они требуют на Oracle MBG Я под биндингом понимаю параметризованные SQL-запросы Имеется в виду интерфейс определенного языка программирования к динамической библиотеке. ну это вообще мелочи ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 11:30 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) MBGНа клиент-серверных СУБД пара тысяч одновременных пользователей уже требуют офигенного железа. MTS-а они требуют на Oracle Стоимость лицензий на оракл + стоимость железа + стоимость администрирования ... или нахрена попу наган, если поп не хулиган :-) К тому же оракл имхо неоптимально с железом работает (сотню пользователей мог бы и на целероне обслуживать), и расширяемость так себе - по отзывам, база на десяток терабайт требует очень дорогого железа (если постгрес, кажется, в яху, работает с петабайтными базами, то оракл должен уметь сильно поболее, за свою-то цену). Понятно, что оракл делает упор не на производительность, а на "фичастость" - встроенных возможностей вагон и маленькая тележка, плюс модули... Но все эти возможности в одном проекте не нужны, а требуемую часть из них можно найти/написать. Полтысячи одновременных пользователей документооборота постгрес+эскулайт обслуживают на пентиум Д с парой гиг памяти, и то я полагаю это немного и можно поднять производительность до нескольких тысяч пользователей на указанном железе. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 12:18 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGСтоимость лицензий на оракл + стоимость железа + стоимость администрирования ... Для телекома как правило не критична по поводу производительности: может быть как и SQLite требует более высокого профессионализма чем SQLite ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 12:49 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBGПолтысячи одновременных пользователей документооборота постгрес+эскулайт обслуживают на пентиум Д с парой гиг памяти, и то я полагаю это немного и можно поднять производительность до нескольких тысяч пользователей на указанном железе. поставь 8 Oracle на Linux и получай удовольствие на том-же пеньке ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 12:50 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Gluk (Kazan) MBGСтоимость лицензий на оракл + стоимость железа + стоимость администрирования ... Для телекома как правило не критична До поры до времени - при появлении необхпенькеодимости перенести на кластер из десятка средних серверов вместо одного мощного возникает ощущение присутствия в фильме ужасов :-) Gluk (Kazan) по поводу производительности: может быть как и SQLite требует более высокого профессионализма чем SQLite ? Требует мало того что знания оракла, так еще и существенного времени на администрирование. В последние годы набирают популярность необслуживаемые системы, где или все задается на этапе разработки или система автоподстраивается. Боюсь, написать скрипт, который заменит профессионального админа оракл будет непросто... и стоить этот скрипт будет в разы больше самой системы :-) На самом деле мы обсуждали только движок - эскулайт, на практике к нему добавляют мощный сервер приложений, и вот уже на этой платформе можно разрабатывать достаточно крупные системы. Любую СУБД с ораклом сравнивать сложно, т.к. это уже не столько база данных, сколько сервер приложений и основную ценность представляет именно как мощная платформа с интегрированной СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 13:29 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
Вопрос к MBG] : а как в sqlite дело обстоит с многопоточным доступом(не многопользовательским) в масштабах одного приложения, в частности insert? Какова вероятность возникновения ошибок? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 13:51 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
BIONВопрос к MBG] : а как в sqlite дело обстоит с многопоточным доступом(не многопользовательским) в масштабах одного приложения, в частности insert? Какова вероятность возникновения ошибок? Многопоточный доступ работает как в пределах одного приложения, так и при доступе из разных приложений. Если необходимо выполнять модификацию данных из нескольких потоков, удобно указывать таймаут, в пределах которого запрос стоит в очереди и ожидает освобождения блокировки. Ошибки какого рода имеются в виду? Если речь о возникновении коллизий, то это решается созданием очереди запросов (все делает сама библиотека эскулайт, требуется только максимально допустимое время ожидания в очереди указать). Если в работе самой библиотеки, то вероятность повреждения данных очень мала, лично мне такого видеть не приходилось (использую эскулайт уже лет пять как на серверах и КПК). Хотя при многопоточной работе эскулайт с использованием shared cache пользовательское приложение при неправильной работе с потоками имеет возможность повредить базу (по умолчанию эта опция выключена, имхо выигрыш в производительности от ее использования стоит возможного риска только при критической нехватке ресурсов и тщательно вылизанном коде многопоточного приложения). В рассылке эскулайт время от времени появляются пользователи, в режиме shared cache повредившие базу в многопоточном приложении. При многопользовательском доступе разумно создавать in-memory базу для выполнения длительных операций и к ней монтировать основную базу приложения (для аналитических приложений бывает необходимо создавать отдельную базу на диске для каждого пользователя - когда пользователей сотни и более и каждый может строить отчеты, обрабатывающие многие десятки или сотни мегабайт данных, притом пользоваться однажды созданными отчетами многократно). Для контроля доступа используется callback-функция autorizer - позволяет для каждого соединения к базе разрешить/запретить определенные операции, например, для потока, выполняющего аудит изменений, разрешить только чтение данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 14:48 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG В документации же ясно сказано, что этот режим следет использовать на платформах, где операция удаления файла намного более затратная, нежели забивание первого блока файла нулями. Если на вашей платформе это не так, то режим persist вам не подходит. "The PERSIST journaling mode is useful as an optimization on platforms where deleting a file is much more expensive than overwriting the first block of a file with zeros." P.S. "Если ничего больше не помогает, прочтите наконец документацию!" (с) Журнал используется при выполнении операции select? (у меня БД не модифицируется) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 19:10 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
PPA MBG В документации же ясно сказано, что этот режим следет использовать на платформах, где операция удаления файла намного более затратная, нежели забивание первого блока файла нулями. Если на вашей платформе это не так, то режим persist вам не подходит. "The PERSIST journaling mode is useful as an optimization on platforms where deleting a file is much more expensive than overwriting the first block of a file with zeros." P.S. "Если ничего больше не помогает, прочтите наконец документацию!" (с) Журнал используется при выполнении операции select? (у меня БД не модифицируется) Не используется, но создаваться может - по команде "begin exclusive;" создается файл журнала и база блокируется монопольно. Интересно только, зачем вам понадобилось для операций чтения эксклюзивную блокировку ставить?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 19:24 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG Не используется, но создаваться может - по команде "begin exclusive;" создается файл журнала и база блокируется монопольно. Интересно только, зачем вам понадобилось для операций чтения эксклюзивную блокировку ставить?.. У меня явной блокировки нет. Проблема вообще выглядит так после указания прагмы PRAGMA journal_mode=PERSIST; Скорость выполнения нескольких десятков тысяч запросов вида select count(*) from fly_tth where tth=?; уменьшается в 10-ки раз убираешь прагму - все становится хорошо. версия - свежачек 3.6.1 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 19:37 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
PPA MBG Не используется, но создаваться может - по команде "begin exclusive;" создается файл журнала и база блокируется монопольно. Интересно только, зачем вам понадобилось для операций чтения эксклюзивную блокировку ставить?.. У меня явной блокировки нет. Проблема вообще выглядит так после указания прагмы PRAGMA journal_mode=PERSIST; Скорость выполнения нескольких десятков тысяч запросов вида select count(*) from fly_tth where tth=?; уменьшается в 10-ки раз убираешь прагму - все становится хорошо. версия - свежачек 3.6.1 :) Сколько транзакций используете? Ну и тест выкладывайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 21:42 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG Сколько транзакций используете? Ну и тест выкладывайте. В данном месте вообще не используются транзакции я не меняю данные - выполняется серия select-ов. история проблемы тут: http://forum.wafl.ru/index.php?showtopic=5179&pid=79228&st=0entry79228 diff исправления такой: http://code.google.com/p/flylinkdc/source/detail?r=387# т.е. удаление "PRAGMA journal_mode=PERSIST;" решило проблему после PERSIST тормозят такие вызовы CFlylinkDBManager::is_old_tth(const TTHValue& p_tth) CFlylinkDBManager::is_download_tth(const TTHValue& p_tth) их исходник выглядит так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 22:19 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
PPA MBG Сколько транзакций используете? Ну и тест выкладывайте. В данном месте вообще не используются транзакции я не меняю данные - выполняется серия select-ов. история проблемы тут: http://forum.wafl.ru/index.php?showtopic=5179&pid=79228&st=0entry79228 diff исправления такой: http://code.google.com/p/flylinkdc/source/detail?r=387# т.е. удаление "PRAGMA journal_mode=PERSIST;" решило проблему после PERSIST тормозят такие вызовы CFlylinkDBManager::is_old_tth(const TTHValue& p_tth) CFlylinkDBManager::is_download_tth(const TTHValue& p_tth) Если транзакция не стартует, то указанная прагма ничего не меняет, это можете посмотреть в исходниках эскулайта. Как пример, пара моих тестовых скриптов (версия SQLite 3.5.9): Вот скрипт создания базы размером 25365K: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
А вот скрипт для чтения Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Время выполнения последнего примерно 25 секунд и при удалении обсуждаемой прагмы не меняется. Проблема в вашем враппере. Функция is_old_tth вызывает функцию get_tth_id, в которой создается транзакция и в ней выполняются операции insert. Посмотрите, во время выполнения запросов рядом с файлом вашей базы появляется файл журнала. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 23:15 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG Время выполнения последнего примерно 25 секунд и при удалении обсуждаемой прагмы не меняется. Проблема в вашем враппере. Функция is_old_tth вызывает функцию get_tth_id, в которой создается транзакция и в ней выполняются операции insert. Посмотрите, во время выполнения запросов рядом с файлом вашей базы появляется файл журнала. возможно и враппер виноват... но транзакция создается только при условии p_create = true Код: plaintext 1. 2. 3. 4.
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 23:31 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
MBG db eval {DROP TABLE IF EXISTS events} db eval {CREATE TABLE events (id INTEGER PRIMARY KEY,value INTEGER)} [/src] Время выполнения последнего примерно 25 секунд и при удалении обсуждаемой прагмы не меняется. у меня есть еще отличия тип кей-поля char(24) скрипт создания табличек такой: m_flySQLiteDB.executenonquery("create table IF NOT EXISTS fly_tth(\n" "tth char(24) PRIMARY KEY NOT NULL);"); m_flySQLiteDB.executenonquery("create table IF NOT EXISTS fly_hash(\n" "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, tth char(24) NOT NULL UNIQUE);"); и еще все это под Win32 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2008, 23:42 |
|
SQLite VS Gigabase
|
|||
---|---|---|---|
#18+
PPA "Ну кто так строит" (с). В рассылке эскулайта чуть не каждый день пользователи жалуются на глюки при работе с различными врапперами и в вижуал средах. Напишите встроенную в эскулайт функцию и вызывайте ее без всякого враппера, зачем вам т акой франкенштейн? Вот как пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79.
Компилируется вот так: Код: plaintext
Пишите набор встроенных функций под свою задачу и собираете расширение или напрямую вкомпиливаете их в эскулайт. Как видите, код простой получается. Например, полсотни функций, нужных для построения биллинга, пишутся примерно за неделю. Под виндой есть компилятор mingw (порт gcc). Мегабайт 50 при установке занимает. Указанный выше код компилируется одной строчкой и легко переносится на любую платформу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2008, 11:31 |
|
|
start [/forum/topic.php?all=1&fid=54&tid=2009487]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
154ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
others: | 9ms |
total: | 278ms |
0 / 0 |