Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
Есть таблица около 20 млн записей. В ней 5 индексов. 1) данные в колонке char 32, потом будет заполнен весь, но хз когда это будет. индекс занимает 2564 мб 2) данные в колонке char 32, потом будет заполнен на половину, но хз когда это будет. индекс занимает 2529 мб сейчас где то миллиона полтора записей заполнено в 1 колонке и 700 тысяч во второй. 3) данные в колонке char var 255, заполнен 100% уникальными записями. индекс занимает 2028 мб. 4) данные в колонке char 16, очень мало данных, типа 1 запись на тысячу пустых. индекс занимает 1758 мб 5) данные в колонке char 10, заполнен данными 100%, но не уникальные значения (несколько сотен строк). индекс занимает 580 мб. Размеры: таблица 8615 мб; toast 8680 кб; размер индексов 12 гб!!! Вопросы: Это нормально такие индексы? Есть ли смысл ставить другие типы индексов под мою задачу (не btree)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2016, 12:13 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
azsx, о людях, имеющих в пж поля типа char (не чар(1)) всё сказал г-н лавров, в знаменитой реплике. о людях, всё время апдейтящих поля в пж--ных тостах он сказал то же самое. два раза. у вас там что -- джейсоны или иксемель ? ставьте плановый реиндекс на каждый 100 тыс -- 1 лям апдейтов, что ли. иначе так и бкдете с вечно опухшими индексами сидеть. ps для любителей множественных апдейтов -- у пж отвратительная архитектура. хуже только , вернее хуже не бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2016, 12:24 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
azsxЕсть таблица около 20 млн записей. В ней 5 индексов. 1) данные в колонке char 32, потом будет заполнен весь, но хз когда это будет. индекс занимает 2564 мб 2) данные в колонке char 32, потом будет заполнен на половину, но хз когда это будет. индекс занимает 2529 мб сейчас где то миллиона полтора записей заполнено в 1 колонке и 700 тысяч во второй. 3) данные в колонке char var 255, заполнен 100% уникальными записями. индекс занимает 2028 мб. 4) данные в колонке char 16, очень мало данных, типа 1 запись на тысячу пустых. индекс занимает 1758 мб 5) данные в колонке char 10, заполнен данными 100%, но не уникальные значения (несколько сотен строк). индекс занимает 580 мб. Размеры: таблица 8615 мб; toast 8680 кб; размер индексов 12 гб!!! Вопросы: Это нормально такие индексы? Есть ли смысл ставить другие типы индексов под мою задачу (не btree)? Для начала: после того как вы в таблицу добавили новое поле с default значением - у вас таблицам и индексы выросли в 2 раза автоматически (и с хорошими шансами будут расти дальше по мере добавления новых колонок таким странным методом). Рекомендую посмотреть в сторону pgcompacttable или pg_reorg (или старого доброго vacuum full если у вас относительно свежая версия базы), и посмотреть на baseline размер таблицы и индексов (а не на текущие распухшие вашими стараниями значения). PS: при наличии 5 индексов в таблице это вполне нормально что в сумме они будут занимать больше чем таблица (особенно если сама таблица узкая). PPS: по 1/2/4 - NULL значения в поле тоже индексируются если вы не сделали специально условный индекс по NOT NULL то ваши незаполненные значения будут в индексе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2016, 12:36 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
авторв пж поля типа char (не чар(1)) всё сказал г-н лавров а пж это кто? я посмотрел в pgadmin у меня колонки character и указана длинна. Это не правильно? автору вас там что -- джейсоны или иксемель ? qwwq, не уверен. Если json - данные для людей, а второе xml - то скажу что у меня. 1 и 2 колонка - это мд5 сумма файлов; 3 колонка - это url (только домен и зона, без протокола). это цифровой код, записанный текстом (так как он логично нужен текстом) и 5 колонка - это дата дд.мм.гггг - так как она мне нужна для обработки всё равно только текстом. Это какой тип данных json? авторставьте плановый реиндекс на каждый 100 тыс -- 1 лям апдейтов, что ли. то есть команду ALTER INDEX [ IF EXISTS ] имя RENAME TO новое_имя а вот товарищ пишет авторпри наличии 5 индексов в таблице это вполне нормально что в сумме они будут занимать больше чем таблица (особенно если сама таблица узкая). и еще подскажите, пожалуйста, а как reindex сделать, чтобы он таблицу не блокировал? --- авторпосле того как вы в таблицу добавили новое поле с default значением - у вас таблицам и индексы выросли в 2 раза автоматически (и с хорошими шансами будут расти дальше по мере добавления новых колонок таким странным методом). Maxim Boguk, то есть это плохо NULL убирать. Но я наоборот читаю, что любое значение null также занимает место, особенно на boolean всяких. Опять же мне условия выборок упрощаются в написании, мне не надо писать WHERE znak = null OR znak = '' чтобы найти все пустые значения, а достаточно набрать WHERE znak = '' Я не прав? авторРекомендую посмотреть в сторону pgcompacttable или pg_reorg (или старого доброго vacuum full если у вас относительно свежая версия базы), и посмотреть на baseline размер таблицы и индексов (а не на текущие распухшие вашими стараниями значения). почитал. Ничего не понял. авторNULL значения в поле тоже индексируются если вы не сделали специально условный индекс по NOT NULL то ваши незаполненные значения будут в индексе. а можно при создании индекса указать, чтобы постгрес значения '' не индексировал? Или какие то определенные значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2016, 14:49 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
azsxавторв пж поля типа char (не чар(1)) всё сказал г-н лавров а пж это кто? записываю : по лаврову разногласий нет. с этим закончили. вопрос: откуда ж, любезный, у вас там тосты взялись, на 5 коротких полях ? ну и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2016, 15:23 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
авторс этим закончили. я ничего не понял, но пофиг. автороткуда ж, любезный, у вас там тосты взялись, на 5 коротких полях ? в таблице 14 колонок, это индексов 5. Я перечислил только колонки в которых есть индексы. У меня в этой таблице есть поле text, как правило мелкое, килобайт - два. Если запись обрабатывается, то в поле text обязательно чо то записывается (99.9%). Или я строку удаляю потом. авторну и т.д. я ничего не понял, но пофиг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2016, 15:49 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
azsx, 1) создайте индекс, такой же, как один из существующих через create index concurrently indexname2 on ... 2) почти наверняка он будет значительно меньше существующего. прочитать про mvcc, bloat, понять почему так происходит 3) удалить старый индекс, новый переименовать (при желании), повторить с остальными ну или если на сайте две калеки, подождать пока они будут спать и в ночное время запустить vacuum full таблицы с ее полной блокировкой. 4) почитать про частичные (partial) индексы, попробовать создать нужный - сравнить размер, сделать выводы 5) null значение в поле занимает ровно 0 байт (если nullable полей меньше 8) - есть такая особенность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2016, 19:44 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
Alexius, спасибо. Создал командой: Код: plsql 1. вместо старого индекса размером 2529 мб, получился индекс 1069 мб. То есть мне надо после удаления 1 млн записей пересоздавать индексы, удаляя старые - верно? Или как то иначе? Я верно понимаю, что в индексе на 1000 мб скорость будет в два раза быстрее записи, чем в индексе на 2000 мб? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2016, 08:07 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
azsxЯ верно понимаю, что в индексе на 1000 мб скорость будет в два раза быстрее записи, чем в индексе на 2000 мб? нет. сильно зависит от того, будет ли нужная часть индекса в памяти. запросы с более мелким индексом могут и на 1% быстрее работать, а могут и в 10 раз быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2016, 12:19 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
Alexius, спасибо за ответ. Хотя мне это не кажется очень удобным, но правильно ли я понял, что с базами в несколько гигабайт, на которых активно ведется добавление новых записей и удаление старых все администраторы так и делают: 1. создают новый индекс с новым именем; 2. удаляют старый индекс. И так каждые две недели к примеру? Второй вопрос. У меня на ssd 51 гб свободен, может как то симплинками перенести индексы на ssd? Или у меня на компьютере 32 гб оперативной памяти, правда 21 гб занят программами. Может как то увеличить оперативную память для индексов? зы хотя честно говоря сейчас скорости на выборку мне более чем хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2016, 12:47 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
--- сбор отчета отработал почти в 5 раз быстрее (вместо 5+ минут - 1 минута). Обработка записей (основной процесс) обработал всего на несколько процентов больше (вместо 240 тысяч - 256 тысяч записей). Может быть это из-за индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2016, 01:46 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
azsxХотя мне это не кажется очень удобным, но правильно ли я понял, что с базами в несколько гигабайт, на которых активно ведется добавление новых записей и удаление старых все администраторы так и делают: 1. создают новый индекс с новым именем; 2. удаляют старый индекс. Никакие администраторы ТАК не делают, может за исключением самых дурных и кривых ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 15:57 |
|
||
|
Сколько весят индексы?
|
|||
|---|---|---|---|
|
#18+
JonhsonazsxХотя мне это не кажется очень удобным, но правильно ли я понял, что с базами в несколько гигабайт, на которых активно ведется добавление новых записей и удаление старых все администраторы так и делают: 1. создают новый индекс с новым именем; 2. удаляют старый индекс. Никакие администраторы ТАК не делают, может за исключением самых дурных и кривых Не совсем так, но делают. Из-за того, что: отсутствует REINDEX CONCURRENTLY, т.е. перестроить индекс — блокирует таблицу используется система контроля схемы (скажем, liquibase) — индекс должен быть и у него должно быть определённое имя. В результате приходится: - создавать конкурентно новый индекс - дропать старый - переименовывать вновь созданный. И да, если индекс обеспечивает ключ, то всё совсем печально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2016, 17:21 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39258768&tid=1997147]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
184ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 292ms |

| 0 / 0 |
