|
|
|
Стоимость запроса
|
|||
|---|---|---|---|
|
#18+
Добрый день. Я принимаю участие в разработке одного сервиса типа социальной сети для мобильных устройств. В нашем сервисе есть довольно сложные запросы в бд. Но по причине моей не опытности я не могу понять как определить что тот или иной запрос удовлетворит меня по времени выполнения? Как и можно ли узнать стоимость выполнения запроса вне зависимости от кол-ва записей в бд в целом? То есть у меня сейчас тестовая база насчитывает около 110 юзеров и множество связанного контента с ними. Например есть один сложный запрос который дергает 3 таблицы (по отношениям many-to-many), его стоимость 900. Это много или мало? Не загнется ли бд при 1000 пользователей например? Хотелось бы узнать как оценивать такие вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2016, 11:10 |
|
||
|
Стоимость запроса
|
|||
|---|---|---|---|
|
#18+
Closius, на глаз такие вещи оцениваются. стоит учесть, что при 100 пользователях оптимизатор может выбрать один алгоритм, а при 1000 совершенно другой. и классы сложности бывают разные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2016, 12:56 |
|
||
|
Стоимость запроса
|
|||
|---|---|---|---|
|
#18+
drsmClosius, на глаз такие вещи оцениваются. стоит учесть, что при 100 пользователях оптимизатор может выбрать один алгоритм, а при 1000 совершенно другой. и классы сложности бывают разные Спасибо за ответ! А есть где нибудь таблица сложностей определенных функций в постгресе? Например я гдето слышал что простой SELECT * FROM table WHERE id=3; имеет сложность О(logN). А как насчет более детального описания? Например какова будет сложность такого же запроса SELECT DISTINCT(name) FROM table; ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2016, 17:43 |
|
||
|
Стоимость запроса
|
|||
|---|---|---|---|
|
#18+
ClosiusdrsmClosius, на глаз такие вещи оцениваются. стоит учесть, что при 100 пользователях оптимизатор может выбрать один алгоритм, а при 1000 совершенно другой. и классы сложности бывают разные Спасибо за ответ! А есть где нибудь таблица сложностей определенных функций в постгресе? Например я гдето слышал что простой SELECT * FROM table WHERE id=3; имеет сложность О(logN). А как насчет более детального описания? Например какова будет сложность такого же запроса SELECT DISTINCT(name) FROM table; ? будет O(N*log(N)) в лучшем случае... и это не вопрос к базе а к ограничениям алгоритмов. Вообще любые подобные вещи тестятся ТОЛЬКО натурными тестами на реальном железе которое будет использовано для Production и на реальных обьемах сгенерированных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2016, 17:57 |
|
||
|
Стоимость запроса
|
|||
|---|---|---|---|
|
#18+
Maxim Bogukбудет O(N*log(N)) в лучшем случае... и это не вопрос к базе а к ограничениям алгоритмов. Вообще любые подобные вещи тестятся ТОЛЬКО натурными тестами на реальном железе которое будет использовано для Production и на реальных обьемах сгенерированных данных. Спасибо. А может есть где какие либо тесты на основе реальной загрузки? Или даже best practices по написанию запросов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2016, 23:15 |
|
||
|
Стоимость запроса
|
|||
|---|---|---|---|
|
#18+
Closius Как и можно ли узнать стоимость выполнения запроса вне зависимости от кол-ва записей в бд в целом? То есть у меня сейчас тестовая база насчитывает около 110 юзеров и множество связанного контента с ними. Например есть один сложный запрос который дергает 3 таблицы (по отношениям many-to-many), его стоимость 900. Это много или мало? Не загнется ли бд при 1000 пользователей например? Хотелось бы узнать как оценивать такие вещи. Берешь пишешь генератор данных для бд, набиваешь данные, чтобы их было много, скажем, в10 раз больше предполагаемый реальной загрузки, Потом на этой базе мериишь время выполнения твоих запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 07:34 |
|
||
|
Стоимость запроса
|
|||
|---|---|---|---|
|
#18+
ClosiusСпасибо. А может есть где какие либо тесты на основе реальной загрузки? Или даже best practices по написанию запросов? в принципе есть, но на самом деле, нужно уметь читать и понимать вывод этой комманды: http://www.postgresql.org/docs/current/static/sql-explain.html этого достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 09:41 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39144039&tid=1997532]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
188ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 516ms |

| 0 / 0 |
