172 похожих чатов

@Yaroslav_Schekin Добрый день, вы мне как-то помогали с оптимизацией запроса,

так вот он опять начинает подтормаживать, вернее даже не так, запрос выполняется секунд 10 но почему-то база ложится, я так понимаю это происходит когда такие запросы превышают какое-то число соединений, и php начинает выдавать ошибку по таймауту.
Вот я хочу узнать, сколько реально записей может быть в одной таблице для корректной и быстрой работы без использования партицирования или масштабирования базы данных?
Сейчас одно таблица содержит ~ 1148059136 записей, и это число растет на 3.5 миллиона каждые 24 часа, можешь дать пару советов?)

12 ответов

11 просмотров

Так я не помню запрос и т.п. Покажите https://t.me/pgsql/476688, в общем.

Сергей- Автор вопроса
Yaroslav Schekin
Так я не помню запрос и т.п. Покажите https://t.me...

там с этим проблемы, сейчас попробую найти нашу переписку

>сколько реально записей может быть в одной таблице для корректной и быстрой работы без использования партицирования или масштабирования базы данных? Миллиардов 300 примерно.

Сергей- Автор вопроса
Ilya Anfimov
>сколько реально записей может быть в одной таблиц...

ахахахах, получается у меня запас еще в 99 миллиардов?)

Сергей
ахахахах, получается у меня запас еще в 99 миллиар...

На самом деле я отвечал "можэт" — в предположэнии минимальной таблицы. Так-то, если там записи по килобайту, и не тостятся особо — то это число падает до где-то 10 миллиардов. То есть всё от таблицы зависит. Максимальный размер таблицы (основного heap таблицы) — 32ТБ, чтобы корректно выполнялись всякие полнотабличные update — нужэн запас хотя бы вдвое. Так что, ну, когда таблица большэ 10 ТБ (основной heap таблицы, ну или toast-часть, если она большэ) — пора партицыонировать. И да... Скорость работы после этого почти всегда уменьшается.

Сергей- Автор вопроса
Ilya Anfimov
На самом деле я отвечал "можэт" — в предположэнии ...

update 3.5 миллионов только к одной таблице в сутки, таких таблиц 6 вроде как

> я так понимаю это происходит когда такие запросы превышают какое-то число соединений, и php начинает выдавать ошибку по таймауту. Ну, не превышайте это число соединений. Ну да, максимальный throughput (количество таких запросов в секунду) — зависит от того, сколько их параллельно выполняется. Поначалу (при двух-трёх-пяти и т.д.) соединениях — оно обычно растёт, поскольку растёт утилизацыя ядер за счёт параллелизма, уменьшаются простои I/O. Потом она выходит или на какой-то пик или на плато. Потом начинает снижаться из-за конкуренцыи за ресурсы, блокировки, вытеснения кого-то в своп и прочее такое. (в версиях до 12 это почти всегда был пик, потом было многое сделано, чтобы проблемы с блокировками были меньшэ — теперь это нередко плато). Естественно, что если не ограничивать число соединений — то при любой проблеме у вас будет всякий thrashing твориться, пропускная способность системы сильно упадёт. Проведите тэстирование, определите ваш максимум и ограничьте число воркеров — чтобы постгрес вам выдавал максимальную проивзодительность. (Потом, если надо — отмасштабируйте жэлезо или откорректируйте запросы, чтобы ваша максимальная проивзодительность решала вашы бизнес-задачи).

Сергей- Автор вопроса
Ilya Anfimov
На самом деле я отвечал "можэт" — в предположэнии ...

вес таблицы вместе с индексами на сколько я понял 777gb в данный момент, но если это очень мало, я не могу понять почему тогда обычный запрос по типу select ... from coin inner join table as t on t.id = t.coin_id where table.latest = true order coin.rate limit 100 offset 0 выпонялся быстно при 100 тысяч, а теперь более минуты? индексы по полям latest, coin_id where latest = true есть

Сергей
вес таблицы вместе с индексами на сколько я понял ...

Вы вроде не первый день тут https://t.me/pgsql/476688

Сергей- Автор вопроса
Ilya Anfimov
Вы вроде не первый день тут https://t.me/pgsql/4...

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

Сергей
когда мне дадут доступ, этот скрипт просто выполни...

Но вообще — внимательно прочесть https://t.me/pgsql/303899 , понять что там написано. Это — набор данных, от которого можно начинать работать. Дажэ не в чятике, самому по себе — это что-то, от чего вообще можно отталкиваться.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта