Skip to content

Instantly share code, notes, and snippets.

@Tyralion
Created January 24, 2017 05:36
Show Gist options
  • Save Tyralion/213a630c434bcbcf033679974826d000 to your computer and use it in GitHub Desktop.
Save Tyralion/213a630c434bcbcf033679974826d000 to your computer and use it in GitHub Desktop.
Партиционирование и равномерное распределение данных
Есть таблица Crosses. В ней 132 миллиона записей. Таблица разбират на партиции вида:
Crosses_1, Crosses_2 и тд. в каждой из таблиц по 20 миллионов записей.
СОздание партиций и выбор партиции для вставки осуществляется через хранимку. В хранимке смотрится последний используемый идентификатор при вставке и на этом основании осуществляется выбор партиции (вставка в существующую или создание нвоой партиции и вставка в нее).
Так как данных вставляется очень много поэтому вставка данных осуществляется через INSERT ... VALUES ... ON CONFLICT DO NOTHING где проверяется уникальность индекса. То есть получается что в некоторых ситуациях партиция может быть заполнена не на 100% (такая вот разряженная таблица). Так же бывают массовые (убийства) удаления данных. В общем, инкрсементный счетчик растет и плодятся партиции.
Вопрос: есть ли программки/скрипты которые осуществляют рамномерный перенос данных по всем партициям?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment