DMDEV_TALKS Telegram 299
Какое оптимальное количество строк в таблицах реляционных СУБД?

На своем опыте использования разных СУБД и пообщавшись с более профильными ребятами DBE (Database Engineer) - я пришел к выводу, на сколько хорошо или плохо работают реляционные СУБД в зависимости от объема данных в таблицах:

1️⃣ От 0 до 10M - такое количество строк, пожалуй, является идеальным. Все SQL запросы по любым колонкам работают очень быстро, и даже full scan выполняется за доли секунды.

2️⃣ От 10М до 50М - это довольно увесистые таблицы, уже нужно задумываться о создании индексов и как написать хорошо SQL запросы. Нужно избегать full scan, если это возможно. Старые SQL запросы скорее всего придется пересмотреть и оптимизировать, потому что появляются проблемы с производительностью приложений.

3️⃣ От 50М до 100М - пора доставать задачи из бэклога о редизайне схемы базы данных, рассматривать партиционирование/шардирование (на уровне СУБД, если она это поддерживает, либо на уровне приложения). Или даже использование/переезд на другую СУБД, потому что релиз практически любой фичи сопряжен с какими-то проблемами. А старый функицонал все чаще выстреливает в ногу там, где даже не ожидал. Даже простейшее добавление/удаление колонки, создание нового индекса может привести к full outage.

4️⃣ От 100М до 1ММ - это как тонущий корабль, ибо поздно задумываться о чем-то - проблемы уже есть здесь и сейчас. А использовать какое-либо решение из пункта 3 сопряжено с большими проблемами или даже не является возможным.

Также нужно помнить не только о количестве, но и об объеме информации (количестве байт), которое занимает в среднем одна строка в таблице. Ибо если решить хранить там бинарники (картинки, файлы) или большие строки, то описанные выше проблемы как будто сдигаются и могут начаться гораздо раньше!


Уже не помню из какой книги, но я достал для себя интересную мысль, которую применяю при написании алгоритмов или тех же SQL запросов:
Eсли что-то сложно или дольше делать тебе, то и машине это будет сложнее/дольше.


Другими словами говоря, я ставлю себя на место машины/компьютера.

Например:
1️⃣ Переносить дрова по одной штуке сложнее, чем взять тележку (= использование батчей)

2️⃣ Если попросить друга, то выкопать картошку в огороде будет почти в 2 раза быстрее (= использование несколько ядер/потоков)

3️⃣ Поднимать вес гантель становится все сложнее с увеличением веса (= увеличению кол-ва строк в таблицах)

4️⃣ Искать номер телефона в справочнике гораздо быстрее, если он отсортирован по алфавиту (= использование сортировок и двоичного поиска)

PS. На фото - это я себе сделал подарок на НГ, чтобы выполнять силовые не выходя из дома 😁
👍46🔥157❤‍🔥3



tgoop.com/dmdev_talks/299
Create:
Last Update:

Какое оптимальное количество строк в таблицах реляционных СУБД?

На своем опыте использования разных СУБД и пообщавшись с более профильными ребятами DBE (Database Engineer) - я пришел к выводу, на сколько хорошо или плохо работают реляционные СУБД в зависимости от объема данных в таблицах:

1️⃣ От 0 до 10M - такое количество строк, пожалуй, является идеальным. Все SQL запросы по любым колонкам работают очень быстро, и даже full scan выполняется за доли секунды.

2️⃣ От 10М до 50М - это довольно увесистые таблицы, уже нужно задумываться о создании индексов и как написать хорошо SQL запросы. Нужно избегать full scan, если это возможно. Старые SQL запросы скорее всего придется пересмотреть и оптимизировать, потому что появляются проблемы с производительностью приложений.

3️⃣ От 50М до 100М - пора доставать задачи из бэклога о редизайне схемы базы данных, рассматривать партиционирование/шардирование (на уровне СУБД, если она это поддерживает, либо на уровне приложения). Или даже использование/переезд на другую СУБД, потому что релиз практически любой фичи сопряжен с какими-то проблемами. А старый функицонал все чаще выстреливает в ногу там, где даже не ожидал. Даже простейшее добавление/удаление колонки, создание нового индекса может привести к full outage.

4️⃣ От 100М до 1ММ - это как тонущий корабль, ибо поздно задумываться о чем-то - проблемы уже есть здесь и сейчас. А использовать какое-либо решение из пункта 3 сопряжено с большими проблемами или даже не является возможным.

Также нужно помнить не только о количестве, но и об объеме информации (количестве байт), которое занимает в среднем одна строка в таблице. Ибо если решить хранить там бинарники (картинки, файлы) или большие строки, то описанные выше проблемы как будто сдигаются и могут начаться гораздо раньше!


Уже не помню из какой книги, но я достал для себя интересную мысль, которую применяю при написании алгоритмов или тех же SQL запросов:
Eсли что-то сложно или дольше делать тебе, то и машине это будет сложнее/дольше.


Другими словами говоря, я ставлю себя на место машины/компьютера.

Например:
1️⃣ Переносить дрова по одной штуке сложнее, чем взять тележку (= использование батчей)

2️⃣ Если попросить друга, то выкопать картошку в огороде будет почти в 2 раза быстрее (= использование несколько ядер/потоков)

3️⃣ Поднимать вес гантель становится все сложнее с увеличением веса (= увеличению кол-ва строк в таблицах)

4️⃣ Искать номер телефона в справочнике гораздо быстрее, если он отсортирован по алфавиту (= использование сортировок и двоичного поиска)

PS. На фото - это я себе сделал подарок на НГ, чтобы выполнять силовые не выходя из дома 😁

BY DMdev talks




Share with your friend now:
tgoop.com/dmdev_talks/299

View MORE
Open in Telegram


Telegram News

Date: |

Each account can create up to 10 public channels Click “Save” ; Don’t publish new content at nighttime. Since not all users disable notifications for the night, you risk inadvertently disturbing them. Ng, who had pleaded not guilty to all charges, had been detained for more than 20 months. His channel was said to have contained around 120 messages and photos that incited others to vandalise pro-government shops and commit criminal damage targeting police stations. SUCK Channel Telegram
from us


Telegram DMdev talks
FROM American