@pgsql

Страница 379 из 1062
Maksim
27.06.2017
07:31:42
false типа?
угу, правда waiting - это флаг, что воркер ожидает освобождения блокировки

Mike Chuguniy
27.06.2017
07:36:34
Мне нужно записать дату изменения при обновления записи В доке pg описано before update и after update Когда мне дату то записывать до или после? Есть какая то серьезная разница?
Именно дату и именно изменения? Я бы одним запросом вместе с данными делал безо всяких триггеров, ибо тормоза будут гарантированно. А вот порядок тормозов - это надо смотреть.

Dmitry
27.06.2017
07:39:43
А, там виртулка какая-то. Тогда хз.

Google
Артур
27.06.2017
07:58:14
UUID против BIGINT - замерял кто нибудь скорость?

Нашел только такую статью. Но она 2012 года http://softblog.violet-tape.ru/2012/06/06/guid-as-pk/

Может что нибудь изменилось

Alexander
27.06.2017
08:05:43
а зачем вам uuid? стоит начать с этого

ибо если он будет первичным ключиком у множества таблиц... а потом внешние ключи-уиды поползут по всей базе... то нет, нет и еще раз нет.

очень много весит все это, с индексами даже страшно представлять

Артур
27.06.2017
08:07:03
в качестве PK таблицы лицевых интернет счетов.

Или сделать отдельную колонку просто?

raksita
27.06.2017
08:08:34
UUID против BIGINT - замерял кто нибудь скорость?
http://gosimple.me/postgresql-primary-key-type-analysis

Alexander
27.06.2017
08:09:38
128 бит против 64
арифметика простая. Представьте, к примеру, 8 внешних включей уидов. И 8 внешних ключей интов. И миллионы записей во всех связанных таблицах

Denis
27.06.2017
08:09:47
UUID против BIGINT - замерял кто нибудь скорость?
Во сколько раз uuid длиннее bigint, во столько и поиск по индексу медленнее

Google
Сергей
27.06.2017
08:10:26
Поиск как был log(n) так и останется

lemi
27.06.2017
08:10:41
Только размер индекса измениться

Alexander
27.06.2017
08:10:44
неплохой повод устроить холивар)

Сергей
27.06.2017
08:10:51
Константа немного вырастет просто. Возможно несущественно

lemi
27.06.2017
08:11:06
если и тот и тот в кэш помещаются

Mike Chuguniy
27.06.2017
08:11:41
Не-не-не! https://postgrespro.ru/docs/postgrespro/9.6/datatype-uuid Тыц01 В Postgres Pro встроены функции хранения и сравнения идентификаторов UUID, но нет внутренней функции генерирования UUID, потому что не существует какого-то единственного алгоритма, подходящего для всех приложений. Следствие тыц01 Сгенерировать UUID можно с помощью дополнительного модуля uuid-ossp, в котором реализованы несколько стандартных алгоритмов, а можно воспользоваться модулем pgcrypto, где тоже есть функция генерирования случайных UUID. Кроме того, можно сделать это в клиентском приложении или в другой библиотеке, подключённой на стороне сервера.

Айтуар
27.06.2017
08:12:15
Во сколько раз uuid длиннее bigint, во столько и поиск по индексу медленнее
тут не в длине дело, а в том что uuid будет раскидан по всему диску неупорядоченно.

Denis
27.06.2017
08:12:18
Количество слоёв в индексе и правда log, но вот сравнивать нужно в два раза большие по длине в индексе значения. Log это про сравнение с сексканом. Или я не прав?

Mike Chuguniy
27.06.2017
08:13:16
Т.е. налиТСо дополнительное рукоблудие в плане установки контрибов (а оные контрибы не всегда ставятся вместе с сервером) и последующего создания соответствующего EXTENTION-а в каждой базе, где этот UUID нужен.

Fike
27.06.2017
08:14:15
Вы правда думаете, что боттлнек будет из-за того, что процессор будет сравнивать в два раза большие значения?

Типа загрузить один регистр - нормально, два - уже медленно

Сергей
27.06.2017
08:15:18
Регистры же самые медленные

Fike
27.06.2017
08:15:23
Фрагментация индекса пока выглядит куда страшнее

Denis
27.06.2017
08:17:02
А мне кажется, что не в регистрах дело, а в том, что с диска придётся считать в два раза больше данных. Не зависимо индекс это или таблица

Fike
27.06.2017
08:18:38
Сколько бит занимает целиком запись в таблице? Лишние 64 бит будут сильно влиять на производительность? Серьезно?

Давайте тогда начнем с того, что любой текст перед отправкой в базу будем гзипать

А то чего он столько занимает, а мы за диск платим

Fike
27.06.2017
08:20:27
Какая разница? Читать-то надо

Google
Denis
27.06.2017
08:20:59
Да, до них же надо добраться, прочитав другие кортежи. Я это к тому, что при считывании из нескольких миллионов строк uuid и guid разница становится очень заметна. Проверьте

Fike
27.06.2017
08:21:51
Зачем вы их храните строками

Denis
27.06.2017
08:22:09
Кого, простите? Строки в таблице?

Fike
27.06.2017
08:22:12
Это же просто шестнадцать байт

Uuid

Denis
27.06.2017
08:23:46
Вы меня не поняли. Возьмите создайте две таблице на 1кк каждая с одним столбцов. В одной будет uuid, в другой bigint. И сравните скорость запросов даже по равенству первичному ключу

Fike
27.06.2017
08:24:27
В реальном ворклоаде никто не выбирает просто uuid и просто бигинты

Denis
27.06.2017
08:25:02
Не понял вас. В плане не выбирают?

Fike
27.06.2017
08:25:38
В плане в реальном мире никогда нет таблицы из одних первичных ключей

Запись всегда весит в разы больше первичного ключа

Denis
27.06.2017
08:26:04
Но есть запросы по покрывающим индексам

Fike
27.06.2017
08:27:07
Относительные значения тоже как правило ни на что не влияют

Fike
27.06.2017
08:27:37
Потому что разницы между одной и двумя миллисекундами нет

И шансы того, что боттлнек будет именно в uuid - они невелики

Darafei
27.06.2017
08:28:09
У uuid есть приятные свойства, позволяющие не хранить, переносить и синхронизировать счетчики в больших системах

Ildar
27.06.2017
08:28:12
имхо основной профит uuid-ов в том, что их можно генерировать в разных несвязанных базах и чтобы они при этом не пересекались. Если база единственная, то смысла их использовать в общем-то немного

Denis
27.06.2017
08:29:49
Я просто говорю, что uuid медленнее bigint и на больших таблицах, где отбор сложнее, чем равенство первичному ключу - это сказывается. Сильно

Fike
27.06.2017
08:30:24
Отбор сложнее будет очевидно происходить по другим столбцам

Darafei
27.06.2017
08:31:06
"нам четные ууиды, пожалуйста"

Fike
27.06.2017
08:32:14
Зачем? Ну это нереальные все кейсы

Google
Denis
27.06.2017
08:32:44
Нам uuid,которые встречаются во второй таблице и не встречаются в третьей, которых атрибут такой-то. Вполне жизненный кейс

Darafei
27.06.2017
08:33:17
Так у ууидов же в постгресе abbreviated key compare, нет?

Он сравнивается префиксом как бигинтом вначале

Denis
27.06.2017
08:34:20
Но за счёт длины сравнивается дольше, так как поднимать с диска в два раза больше. Я не прав?

И поднимать придётся не один uuid

Fike
27.06.2017
08:34:55
Нам uuid,которые встречаются во второй таблице и не встречаются в третьей, которых атрибут такой-то. Вполне жизненный кейс
Атрибут такой-то - это и есть другие столбцы. Джойны очевидно будут по индексам идти, да, просадка будет, но не настолько демоническая же

Denis
27.06.2017
08:38:03
Alexander
27.06.2017
08:40:51
я вам говорю, это боль. Особенно в условиях ограниченного дискового пространства

Admin
ERROR: S client not available

Артур
27.06.2017
08:49:06
подитог: BIGSERIAL

UIID только для наследуемых таблиц

blkmrkt
27.06.2017
08:53:19
не сервере пг 52% места занято и поэтому не работает вакум фулл. Можно как-то сделать фулл вакум не увеличивая место на диске?

Dmitriy
27.06.2017
08:57:59
не сервере пг 52% места занято и поэтому не работает вакум фулл. Можно как-то сделать фулл вакум не увеличивая место на диске?
Подключить другой диск, сделать на нем table space и вынести на него что-нибудь, например часть индексов

blkmrkt
27.06.2017
08:59:24
А что размер самой большой таблицы больше 50%
неа, меньше. Индивидуально оно вакумилось, а все сразу нет

blkmrkt
27.06.2017
09:00:02
https://github.com/reorg/pg_repack
у меня 8мес назад как раз и сдох RAID когда я эту баланду запустил с целью повакумить с 73% загруженного места, не спасибо :)

Google
Айтуар
27.06.2017
09:00:25
неа, меньше. Индивидуально оно вакумилось, а все сразу нет
вы наверное пытаетесь в несколько потоков?

blkmrkt
27.06.2017
09:00:31
Потаблично делать вакуум фулл.
угу так можно, но думаю не остановит ли это автовакум однажды?

Mike Chuguniy
27.06.2017
09:02:46
угу так можно, но думаю не остановит ли это автовакум однажды?
Не знаю, но так "развлекались" ребята на одном проекте... ПАтАмуШтА "одарённые" начальнЕГЕ "успешно" сокращали затраты на инфраструктуру. Пока этого начальнЕГа не ткнули носом: а завтра (грубо утрируя) усё! Проект помре, пАтАмуШтА дисков нет и неизвестно.

Mike Chuguniy
27.06.2017
09:07:56
угу так можно, но думаю не остановит ли это автовакум однажды?
вакуум фулл эксклюзивно блокирует табличку. Соответственно, автовакуум, по идее, должен пройти мимо, не трогая её.

Артур
27.06.2017
09:14:41
Странно

Очему меньше то?

Я думал от том что больше, вопрос размера этого "больше". Но судя по стате все в триггеры надо пихать )

Айтуар
27.06.2017
09:16:16
Sergey
27.06.2017
09:19:13
Кратенько - по 100 секунд pgbench -c 20 -j 4 -P 1 -T 100 postgres

Очему меньше то?
TPS (transactions per second) с триггером меньше, т.е. скорость работы меньше, запросы выполняются дольше.

Артур
27.06.2017
09:20:36
ааа ? тупанул

тогда все уложилось в голову

Артур
27.06.2017
09:21:30
ато у меня крыша съезжать медленно стала, пытаясь понять: "КАК?"

Mike Chuguniy
27.06.2017
09:22:42
ато у меня крыша съезжать медленно стала, пытаясь понять: "КАК?"
Ага, есть такое. Переработал, однозначно. :)

Артур
27.06.2017
09:31:39
@SergeyPpro спасибо за бенчмарк

Страница 379 из 1062