Postgresql оптимизация размера "многие ко многим"

Когда я смотрел на свою БД в своем проекте, я понял, что самая тяжелая таблица, которую я имею, - это таблица отношений между двумя другими таблицами.

Таблица интеграции, пользователь и известные интеграционные клиенты (связывающие пользователя с интеграцией).

  • Размер таблицы «Мой пользователь»: 2011 строк на 819 КБ (данные 395 КБ + индексы 425 КБ)
  • Размер моей таблицы интеграции: 3 строки на 32 КБ (данные 16 КБ + индексы 16 КБ)
  • Размер таблицы Мои клиенты Integration: 2011 строки для 4Mb (данные 4Mb + индексы 294 КБ)

Вот структура этой таблицы клиентов Integration:

1   "id"    "int4"  "NO"    NULL    "nextval('integration_customers_id_seq'::regclass)" ""  NULL
2   "user_id"   "int4"  "NO"    NULL    NULL    ""  NULL
3   "integration_id"    "int4"  "NO"    NULL    NULL    ""  NULL
4   "created_at"    "timestamp" "NO"    NULL    NULL    ""  NULL
5   "updated_at"    "timestamp" "NO"    NULL    NULL    ""  NULL
6   "parameters"    "jsonb" "YES"   NULL    "'{}'::jsonb"   ""  NULL
7   "marketing_info_email"  "bool"  "YES"   NULL    "true"  ""  NULL
8   "subscriber_id" "varchar"   "YES"   NULL    NULL    ""  NULL

И мой индексы:

"integration_customers_pkey"    "BTREE" t   "id"    ""  NULL
"index_integration_customers_on_user_id_and_integration_id" "BTREE" t   "user_id,integration_id"    ""  NULL
"index_integration_customers_on_user_id"    "BTREE" f   "user_id"   ""  NULL
"index_integration_customers_on_integration_id" "BTREE" f   "integration_id"    ""  NULL

Я просто нахожу разницу в размерах между таблицей отношений и двумя другими, огромными, и мне было интересно, что я что-то упустил в архитектуре или это было нормально? Если это ненормально, что я сделал не так? Если это нормально, есть ли способ оптимизировать его?

Рад предоставить больше информации, если это необходимо:)

Спасибо всем большое за ваше время!

0
задан Nox 27 June 2019 в 03:56
поделиться

1 ответ

Может быть, размер - это то, что вы должны ожидать, потому что таблица содержит больше данных. Помните, что таблица отношений m-to-n может легко содержать больше записей, чем ссылочные таблицы.

Может быть, стол раздутый. Установите расширение pgstattuple и используйте функцию с тем же именем в таблице, чтобы выяснить, так ли это. Если да, запланируйте VACUUM (FULL) и настройте автовакуум на более агрессивный характер.

1
ответ дан Laurenz Albe 27 June 2019 в 03:56
поделиться
Другие вопросы по тегам:

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