Size: a a a

DBA - русскоговорящее сообщество

2020 December 19

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Lex E
А почему много маленьких запросов к СУБД - это дефолтно плохо?

вот такой сценарий,
ты делаешь пет проект,
у тебя мобильное приложение,
ты хочешь реализовать автокомплит

мобильное приложение в 80% случаев будет работать через lte/3g.

на твой взгляд,
о чем стоит подумать, в контекте субд, прежде чем приступить?
А почему много маленьких запросов к СУБД - это дефолтно плохо?

Потому что снижает производительность.

Раундтрипы в бд и из бд в приложение стоят достаточно дорого, если их много, могут вообще убить все на свете.


Есть такая штука 1С Битрикс, там есть такие штуки как "инфоблок", ну и Вэб-формы на них вполне способны при загрузке генерировать порядка 1-1,5 тысячи запросов в БД.
Время одного запроса  порядка 10-100 миллисекунд.
Вот и считай.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Lex E
А почему много маленьких запросов к СУБД - это дефолтно плохо?

вот такой сценарий,
ты делаешь пет проект,
у тебя мобильное приложение,
ты хочешь реализовать автокомплит

мобильное приложение в 80% случаев будет работать через lte/3g.

на твой взгляд,
о чем стоит подумать, в контекте субд, прежде чем приступить?
Следует прочитать ТЗ, тут у тебя нет ничего, о чем можно было бы подумать
источник

N

Nikolay in DBA - русскоговорящее сообщество
Если 10, 100 милисекунд  - это чтение с диска значит были. Много маленьких запросов , если через кэш прошло, то это не так плохо. Там время отклика будет микросекунды.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Ilya Saraev
я извиняюсь, что такое "пет проект"?
Проект "для себя", проект-хобби
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Nikolay
Если 10, 100 милисекунд  - это чтение с диска значит были. Много маленьких запросов , если через кэш прошло, то это не так плохо. Там время отклика будет микросекунды.
Не будет
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Lex E
есть orm, который принято использовать для CRUD задач, то есть примитвных запросов.

если ты не делаешь crud, тогда получается что ты этими своими циклами переписываешь фичи субд, и делаешь никому не нужную работу
Да crud тут даже нет смысла обсуждать, это не бизнес логика .
источник

N

Nikolay in DBA - русскоговорящее сообщество
Ilia Zviagin
Не будет
почему?  если попадание в кэш и доступ по индексу, то это микросекунды.
источник

IS

Ilya Saraev in DBA - русскоговорящее сообщество
да, почитал уже, спасибо. Про orm - я пишу на go, там вполне сносная система заполнения объекта значениями из БД. Значит косяк в нэйминге, потому что у меня на большей части таблиц есть одинаковое поле id.
источник

IS

Ilya Saraev in DBA - русскоговорящее сообщество
эх, чувствую корячится тотальный рефакторинг
источник

LE

Lex E in DBA - русскоговорящее сообщество
Ilia Zviagin
Не будет
а ты не играл в такую игру?

есть таблица, 300тыс строк.
нужно сделать время 1 запроса на чтение 1 строки было < 1 милисек

свою бд писать нельзя)
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Nikolay
почему?  если попадание в кэш и доступ по индексу, то это микросекунды.
Я и так сильно снизил время одного запроса, может быть и больше.


Но ок, допустим, запрос - миллисекунда . 1000-1500 запросов на форме.
Время загрузки формы 1-1,5 секунды.

Это при условии что ВСЕ запросы всегда работают быстро, попадают в кэш и индекс и в план.

А так не всегда будет
источник

LE

Lex E in DBA - русскоговорящее сообщество
Ilya Saraev
эх, чувствую корячится тотальный рефакторинг
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Ilya Saraev
да, почитал уже, спасибо. Про orm - я пишу на go, там вполне сносная система заполнения объекта значениями из БД. Значит косяк в нэйминге, потому что у меня на большей части таблиц есть одинаковое поле id.
ORM и crud тут ни при чем, ты же про бизнес логику спрашивал.

Ни то ни другое к бл не относится почти никак
источник

IS

Ilya Saraev in DBA - русскоговорящее сообщество
пришел к выводу - бл на сервере, курс на орм. Это позволит вытаскивать более ёмкие данные из БД.
источник

IS

Ilya Saraev in DBA - русскоговорящее сообщество
меньшим количеством запросов
источник

LE

Lex E in DBA - русскоговорящее сообщество
Ilia Zviagin
ORM и crud тут ни при чем, ты же про бизнес логику спрашивал.

Ни то ни другое к бл не относится почти никак
хм

Business logic is the custom rules or algorithms that handle the exchange of information between a database and user interface.
источник

IS

Ilya Saraev in DBA - русскоговорящее сообщество
спасибо, мужики.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Ilya Saraev
пришел к выводу - бл на сервере, курс на орм. Это позволит вытаскивать более ёмкие данные из БД.
Какой там ORM на Go ?
источник

N

Nikolay in DBA - русскоговорящее сообщество
в терминах oracle например может быть маленький запрос на несколько buffer get. Там некуда тратить даже 10 миллисекунд, если не пришлось идти на диск. За 10 мс можно прочитать 8KB с диска, а с памяти за примерно 100 микросекунд можно вычитать порядка 64К. это навскидку, то выглядит правдоподобно?
источник

IS

Ilya Saraev in DBA - русскоговорящее сообщество
не ну если без мозгов подходить то да. А еще вроде есть принцип "не делай чего не просили"
источник