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

Триггер я уже создал, просто если будет будет пару миллиардов

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

12 ответов

4 просмотра

Так этот Ваш триггер никто тут не видел — нам-то откуда знать?! ;)

Сергей- Автор вопроса
Yaroslav Schekin
Так этот Ваш триггер никто тут не видел — нам-то о...

там ничего такого нет CREATE OR REPLACE FUNCTION check_unique_transaction() RETURNS trigger AS $$ BEGIN IF EXISTS (SELECT 1 FROM transactions WHERE account_id = NEW.account_id AND currency_id = NEW.currency_id AND transaction_hash = NEW.transaction_hash) THEN RAISE EXCEPTION 'Duplicate transaction'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql;

Будет тормозить, скорее всего (по мере роста (числа) partitions), и особенно — если в каких-то нет индекса по этому условию. На всякий случай — Вы знаете, что так написанные проверки надёжно работают только на SERIALIZABLE?

Сергей- Автор вопроса
Yaroslav Schekin
Будет тормозить, скорее всего (по мере роста (числ...

> … что так написанные проверки … тут про наличие подзапросов вообще? или же про конструкцию EXISTS как частный случай? ( недавно именно EXISTS обсуждали, но думается, что любые подзапросы будут “стрелять” )

Виктор Егоров
> … что так написанные проверки … тут про наличие...

Нет, про то, что здесь вообще нет ничего (точки сериализации для низких уровней изоляции), что гарантировало бы надёжность этого даже при параллельном исполнении двух подобных запросов. Т.е. на RC/RR дубликаты будут вставляться вообще запросто (даже при наличии в каждой partition UNIQUE INDEX ON this_partition(account_id, currency_id, transaction_hash) тоже могут, но с гораздо меньшей вероятностью на практике, конечно).

Если там будет меньшэ 30 миллиардов записей – то прекратите мучать партицыонирование, это всё сложно, медленно и некрасиво.

Сергей- Автор вопроса
Ilya Anfimov
Если там будет меньшэ 30 миллиардов записей – то ...

у меня есть таблица в которой чуть больше 1 миллиарда записей, я хочу получить первые записи по каждой валюте, запрос уже выполняется более 20 минут SELECT DISTINCT ON (currency_id) * FROM records ORDER BY currency_id, datetime; select * from (select *, row_number() over (PARTITION BY currency_id order by datetime) as row from records) as t1 where row = 1; пробовал вот так вот, а вы говорите о 30 миллиардах)

Сергей
у меня есть таблица в которой чуть больше 1 миллиа...

Для начала разговора о скорости запросов приведите всю информацыю из закрепа: https://t.me/pgsql/303899 Можно воспользоваться вот этим скриптом: https://t.me/pgsql/476688 Без этой информацыи такой разговор будет беспредметным.

Сергей
у меня есть таблица в которой чуть больше 1 миллиа...

О, неужели опять https://t.me/pgsql/491548 ? > пробовал вот так вот, а вы говорите о 30 миллиардах) Может, не надо "пробовать так", а стоит написать адекватный запрос / создать подходящие индексы? ;) Впрочем, Вам уже написали, что нужно показать, если хотите помощи...

Сергей
у меня есть таблица в которой чуть больше 1 миллиа...

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

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

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

Какой-то там пердун в 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
Карта сайта