|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
Здравствуйте! Есть таблица Код: plaintext
Код: plaintext
Если в таблице 8 млн. записей запрос отрабатывает где-то 2 мин на одну дату, если 16 млн. уже 5 мин. Есть ли возможность сократить время выборки? Можно ли минимизировать увеличение времени выборки с увеличением количества записей в таблице? Реально ли комфортно работать с 1000 млн. записей в таблице на простом ПК? Спасибо за ответы! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2011, 10:04 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
vcn, Создай индексы (можно использовать составной индекс) - по пол. time (или полям tracker_id,car_id,time). Время выполнения указанного запроса должно быть малой долей секунды на таблице в сотни миллионов записей. См. Тестирование SQLite 3.6.17-mobigroup.2 на больших таблицах ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2011, 14:27 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
MBGvcn, Время выполнения указанного запроса должно быть малой долей секунды на таблице в сотни миллионов записей. может дело в том, что там сервер мощный Intel(R) Core(TM)2 Quad CPU Q6700 @ 2.66GHz MemTotal: 8310900 kB а я выполняю запрос на обычном ПК с 1ГБ оперативки и P4 3ГГц пользуюсь библиотекой System.Data.SQLite? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2011, 14:39 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
vcn, Без индексов всегда и везде тормозить будет. А для вашей маленькой БД и пентиум 1 хватило бы :) Если сомневаетесь в библиотеке - тестируйте запросы в SQLite шелле. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2011, 16:06 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
проиндексировал Код: plaintext 1.
Код: plaintext 1.
это нормально? подскажите, что я делаю не так ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2011, 16:08 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
в sqliteshell аналогичный результат, не быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2011, 16:19 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
vcn, 1. Сделать "vacuum;analyze;" 2. Показать результат "explain query plan ..." ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2011, 19:05 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
MBG, Еще замерить время выполнения для select count(*) ... Т.к. 16 секунд больше похоже на время выборки+время передачи данных клиенту. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2011, 20:08 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
MBGvcn, 1. Сделать "vacuum;analyze;" 2. Показать результат "explain query plan ..." 1. сделал 2. Код: plaintext
MBGЕще замерить время выполнения для select count(*) ... в пределах секунды MBGТ.к. 16 секунд больше похоже на время выборки+время передачи данных клиенту. база на локальном диске, обращений по сети нет ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 00:40 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
vcnпроиндексировал Код: plaintext 1.
Код: plaintext 1.
это нормально? подскажите, что я делаю не такЭтот индекс, на этот запрос - не играет. Сделай: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 00:49 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
vcn2. Код: plaintext
Этот запрос перебирает все записи таблицы! К выборке из первого поста вообще отношения не имеет - где все условия потерялись?.. vcnMBGТ.к. 16 секунд больше похоже на время выборки+время передачи данных клиенту. база на локальном диске, обращений по сети нет Запрос вида "select * ..." требует найти данные на диске, прочитать и передать в обработчик программы (или вывести на экран). Время на первое действие и имеет смысл рассматривать как скорость работы SQLite на данном оборудовании (хорошо, если индексы помещаются в ОЗУ, иначе еще и скорость диска сыграет). Второе определяется в большей степени скоростью диска, третье - способом обработки данных (например, вывод на экран в консоли отнюдь не быстрая операция). Соответственно, надо понимать, что именно измеряется. На главной фишке реляционных СУБД - малых выборках (мало записей небольшого размера) - полное время мало отличается от времени первой операции, а при выборке всех записей (нафига, кстати? любая СУБД для такой операции малопригодна) первое время оказывается малой частью общего. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 00:57 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
White Owl, сделал, стало нааааамного медленнее, я добавил индекс, как ты написал, предыдущий не удалял можно делать разные индексы, под разные запросы? MBG, мне запрос по граничным датам тоже важен, время измеряю до вывода, т.е. если в коде на Си(и на нем протестировал) перед sqlite3_prepare и после sqlite3_step засекаю т.е. получается в железе таки дело? запрос в первом посте ускорил раз в десять убрав функцию из условия, предварительно расcчитав границы в time_t, но тоже не доли секунды ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 01:22 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
автора при выборке всех записей (нафига, кстати? любая СУБД для такой операции малопригодна) мне весь миллиард не нужен, а вот тысяч 300 неплохо бы получать быстро, нужно, чтобы рисовать на карте, пользователь не хочет по дням смотреть, хочет, например, сразу месяц хотя я думаю, что это неудобно если не трудно, подскажите про индексы, на одну таблицу сколько можно создавать? как они влияют друг на друга? БД сама подбирает подходящий? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 01:42 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
vcn, 300 000 записей * 300 байт запись = 100 мегабайт данных. О какой скорости может идти речь?.. и смысла в том нет, хотите трэк показать за месяц - генерализуйте его, останется скажем тысяча точек и все будет удобно и быстро. одна из простейших задач в картографии,вообще-то. Индексы субд сама выбирает,их можно несколько создать,но каждый индекс замедляет вставку и обновление данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 01:56 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
авторгенерализуйте его не совсем понял, я и выбираю все точки, чтобы вывести только нужные, а по ходу добыть дополнительную аналитику, типа остановок, их времени, пробега между остановками, потери позиции и т.п. за индексы спасибо! шелл вроде тормозить стал с добавлением еще одного, а программа вроде живее заворочалась ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 02:02 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
vcn, При вставке данные надо предобрабатывать или ночью например можно это выполнять. на каждый запрос просмотра такую тяжелую операцию делать смысла нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 12:19 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
MBG , White Owl , Спасибо за помощь! Подумаю над предварительной обработкой данных, может действительно отдельные таблицы сделать, в которые аналитику вставлять при импорте данных и запросы строить к ним, а для деталей к большой таблице, но уже с более четкими условиями выборки ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 12:26 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
vcn, Кстати, а где границы видимой области в запросе? Нет смысла извлекать из БД данные, которые все равно не будут видимы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 13:28 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
MBG, все что извлекаю видно на карте, я ее масштабирую по границам выбранных данных но замечание ценное , может стоит пересмотреть идеологию и подгружать данные по мере необходимости ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 13:52 |
|
Количество записей и время выполнения запроса
|
|||
---|---|---|---|
#18+
vcn, Возможно, помогут некоторые мои заметки по теме ГИС: http://geomapx.blogspot.com/search/label/GIS И по ГИС-системе на основе SQLite: http://geomapx.blogspot.com/search/label/Spatialite ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2011, 14:31 |
|
|
start [/forum/topic.php?fid=54&msg=37320085&tid=2009169]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
98ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
others: | 324ms |
total: | 538ms |
0 / 0 |