|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
Юзаю ASP.NET + SQLite Есть таблица: Код: sql 1. 2. 3. 4. 5. 6. 7.
Записей в таблице около ~ 10 000. Запрос: Код: sql 1. 2. 3.
При одновременном запросе нескольких пользователей тормозит просто фантастически. Можно 20-30 секунд ждать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2013, 18:41 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
стесняюсь спросить... 1. зачем создал индекс к таблице? 2.potkinПри одновременном запросе нескольких пользователейзачем выбрал SQLite? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2013, 19:37 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
Создание индекса к полю это нормально. Использование SQLite в многопользовательской среде - это совершенно не нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2013, 19:43 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
White OwlСоздание индекса к полю это нормальнокогда индекс используется в селектах)) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2013, 19:55 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
авторзачем выбрал SQLite? Ограничение других СУБД на размер БД. На размер дискового пространства ограничения приемлемые. авторИспользование SQLite в многопользовательской среде - это совершенно не нормально. Так многопользовательские Селекты только. БД же не блокируется при одновременных Селектах. авторкогда индекс используется в селектах)) Не используется? Пардон, не знал ... "Думал" как в MS SQL - используется ... Аналогичная же фигня и с полем типа "Дата". Хотя СкуЛайт использует все поля как Стринг, если мне не изменяет память. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2013, 20:20 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
автор"Думал" как в MS SQL - используется ... Пардон, с поиском перепутал. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2013, 20:22 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
potkin, у тебя индекс возрастающий, а сортировка в селекте - убывающая. мне до этого казалось, что в sqlite индексы однонаправленные и потому в твоем селекте не используются. но, по результатам теста, они все-таки двунаправленные и дают отличный профит при разных "направлениях" хотя, применительно к 10 тыс строк, тормозов на 20-30 сек добиться очень сложно даже без индексов :) либо .net дает какой-то кривой доступ к базе, либо ты его не настроил или используешь ненадлежащим образом, либо комп сильно загружен чем-то иным, либо блокировки дают такие "паузы" ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2013, 20:49 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
fd00chу тебя индекс возрастающий, а сортировка в селекте - убывающая. мне до этого казалось Я ошибся, когда пост писал. С индексами всё гут (ASC). Вся хрень, скорее всего в этом: Код: c# 1.
Lower, Upper, кириллица, ... Вот и скорость соответствующая ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2013, 22:02 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
ага, смена регистра занимает 20 сек)) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2013, 22:55 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
White OwlИспользование SQLite в многопользовательской среде - это совершенно не нормально. А может, надо документацию почитать?.. WAL режим черти-когда добавлен и вполне себе используется в продакшене. Если же еще и на другие СУБД документацию посмотрите, то обнаружите, что самые используемые - блокировочники. В частности, много одновременных "длинных" пишущих транзакций убьют PostgreSQL - для каждой будет создаваться своя область видимости и вдобавок сборщик мусора не отработает все это безобразие, так что таблицы и индексы будут неограниченно "пухнуть". Для одновременных выборок - SQLite много лучше PostgreSQL, к примеру, который все данные сначала тащит в память, где они зачастую не помещаются, после чего постгрес начинает кидать данные между кэшем и свопом со всеми вытекающими. У меня в блоге есть тесты, из реальных проектов, где SQLite быстрее PostgreSQL на 3 порядка на селектах. Имхо вернее будет сказать, что эскулайт (пока?) непригоден в среде, где есть невероятно много коротких пишущих транзакций - типа кластера оракл у сотовых операторов :) Ждем SQLite4 ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 13:22 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
potkin Код: sql 1.
Код: sql 1. 2. 3.
Индекс создан с коллэйшеном NOCASE, а в запросе COLLATE NOCASE не указано. Поправьте, чтобы индекс использовался в запросе. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 13:26 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
MBGА может, надо документацию почитать?..А может надо подумать? База хранится в файле. Доступ к файлу каждый юзер делает сам. А это значит что доступ к базе в первую очередь разграничивает ОС. Ты можешь сказать какая ОС используется у potkin'а? Ты можешь сказать какая версия sqlite используется у его клиентов и включен ли WAL у каждого из его клиентов? Уж который раз мы с тобой об этом говорим! Ну нельзя советовать embedded by design DBMS как универсальную базу для всех случаев жизни! Да, у некоторых гуру SQLite показывает чудеса производительности. Да, если немножко поднапрячься и соблюсти несколько элементарных (для кого-то) условий, то SQLite вполне потянет задачи enterprise уровня на который обычно ставят что-нибудь типа Oracle, Sybase ASE, MS SQL, или что-нибудь из более дешевых но не менее мощных. Да, я верю что у тебя есть личный опыт использования SQLite в задаче с такой нагрузкой. НО ТЫ ОДИН ТАКОЙ! Пойми это наконец. Ты вот это утверждение видел? potkinБД же не блокируется при одновременных Селектах.Ты все еще веришь что существование WAL спасет и все люди пытающиеся использовать встраиваемую базу в качестве серверной сделают это правильно? На каком-нибудь Феррари тоже можно уголь из карьера возить и при наличии хорошего водителя и группы гениальных механиков эта машина сможет перевезти больше угля чем стандартный карьерный самосвал... Но... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2013, 18:21 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
White OwlТы можешь сказать какая ОС используется у potkin'а? В первом посту писал, что ASP.NET, значит Windows (2008 Sever) White Owl Ты вот это утверждение видел? potkinБД же не блокируется при одновременных Селектах. Мои тесты показывают, что ничего не блокируется, даже при "небольших объёмах" INSERT и UPDATE для SELECT-ов MBG Индекс создан с коллэйшеном NOCASE, а в запросе COLLATE NOCASE не указано. Поправьте, чтобы индекс использовался в запросе. Так: Код: sql 1. 2. 3.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2013, 11:14 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
Вся загвоздка была в lower . Я прошу прощения, забыл её написать Код: sql 1. 2. 3.
Т.к. я использую кириллицу. СкуЛайт различает регистр для кириллицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2013, 12:56 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
White OwlMBGА может, надо документацию почитать?..А может надо подумать? Ты вот это утверждение видел? potkinБД же не блокируется при одновременных Селектах.Ты все еще веришь что существование WAL спасет и все люди пытающиеся использовать встраиваемую базу в качестве серверной сделают это правильно? Документацию все же надо читать, чтобы огульно не ругать людей, говорящих правильные вещи: http://www.sqlite.org/wal.html WAL provides more concurrency as readers do not block writers and a writer does not block readers. Reading and writing can proceed concurrently. Так что все ок, при селектах БД _не блокируется_. А в последней версии еще интереснее сделали, см. офсайт :) И я точно не "один такой", читающий документацию :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 14:36 |
|
Медленная сортировка по текстовому полю.
|
|||
---|---|---|---|
#18+
MBGWhite Owlпропущено... А может надо подумать? Ты вот это утверждение видел? пропущено... Ты все еще веришь что существование WAL спасет и все люди пытающиеся использовать встраиваемую базу в качестве серверной сделают это правильно? Документацию все же надо читать, чтобы огульно не ругать людей, говорящих правильные вещи:Вот-вот. Читай документацию: http://www.sqlite.org/wal.html Activating And Configuring WAL Mode An SQLite database connection defaults to journal_mode=DELETE. To convert to WAL mode, use the following pragma: PRAGMA journal_mode=WAL; The journal_mode pragma returns a string which is the new journal mode. On success, the pragma will return the string "wal". If the conversion to WAL could not be completed (for example, if the VFS does not support the necessary shared-memory primitives) then the journaling mode will be unchanged and the string returned from the primitive will be the prior journaling mode (for example "delete"). А теперь вопрос на засыпку: Ты уверен что ТС сделал PRAGMA journal_mode=WAL;? Ты уверен что он сделал это на всех клиентах? И я еще раз повторяю главный вопрос, который ты почему-то игнорируешь: Ты уверен что у ТС на всех клиентах стоит одна и та-же версия SQLite? MBGТак что все ок, при селектах БД _не блокируется_. А в последней версии еще интереснее сделали, см. офсайт :) И я точно не "один такой", читающий документацию :)Читать ее мало. Надо еще понимать что там написано. А из тех кто сюда приходит с вопросами - 99% не читают документацию вообще. А 50% из тех кто читает - не понимают. И далеко не все из понимающих делают выводы из понятого. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2013, 18:13 |
|
|
start [/forum/topic.php?fid=54&msg=38415438&tid=2008862]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 151ms |
0 / 0 |