Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ партиция Π² sql

ВсС Π²Ρ€ΡƒΡ‚ ΠΈΠ»ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π² MySQL Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ

НСбольшоС лиричСскоС отступлСниС.

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³ прСдставляСт собой курс ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ слоТности
…
ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ курс прСдставляСт собой интСнсивный ΠΎΠ΄Π½ΠΎΠ΄Π½Π΅Π²Π½Ρ‹ΠΉ Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³. Π‘Π»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡΠΌ Π±ΡƒΠ΄ΡƒΡ‚ прСдоставлСны ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ с ОБ Linux. ВрСмя Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ.

Π’ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… курсов ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ MySQL Π½Π΅ сущСствуСт Π² ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ сСго нСдоразумСния являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ основная масса курсов ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΡˆΡ‚Π°Ρ‚ΠΎΠ², Π° Ρ‚Π°ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ β€œΠΈΠ½Π΄ΡƒΡΡ‹β€ ΠΈ ΠΈΠΌ для этого Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… Π·Π½Π°Π½ΠΈΠΉ Π½Π΅ трСбуСтся.

ΠžΡ‚ ΠΎΠ½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΊΠ°ΠΊ.
Π•Ρ‰Π΅ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΠΌΡ‹ΡΠ»ΡŒ, высказанная ΠŸΠ΅Ρ‚Ρ€ΠΎΠΌ, ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ MySQL это большоС сборищС Π³ΠΎΠ²Π½ΠΎΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ написан ΠΎΠ½ ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΊΡ€ΠΈΠ²ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… сообраТСний, Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ. И ΠΊΠ°ΠΊ Π±Ρ‹ Π²Ρ‹ Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ свой сСрвСр Π‘Π”, Π²Ρ‹ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ дСградация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² исходниках ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹Π΅ Π±Π°Π³ΠΈ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ просчСты. ЕдинствСнным Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ способом ΡƒΠΉΡ‚ΠΈ ΠΎΡ‚ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ являСтся использованиС Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти (512 Gb +) ΠΈ SSD дисков (ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΊΠΎΡ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Π»ΡƒΡ‡ΡˆΠ΅ всСго для этого ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ 2 Tb c 10000 Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ пСрСзаписи, с ΠΈΡ… ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ записи Π²Ρ‹ ΡƒΠ±ΡŒΠ΅Ρ‚Π΅ ΠΈΡ… ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π·Π° 3 Π³ΠΎΠ΄Π°).
ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, я Π½Π΅ сторонник Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ накидывания ΠΆΠ΅Π»Π΅Π·Π°, вмСсто использования Π±ΠΎΠ»Π΅Π΅ эффСктивной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, Π½ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с партициями ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ всю ΠΏΡ€Π°Π²ΠΎΡ‚Ρƒ Π΅Π³ΠΎ слов.

Начало

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.
Для Π½Π°Ρ‡Π°Π»Π° посмотритС Π½Π° ΠΊΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ½ΠΎ Π²Π°ΠΌ Π½Π°Π΄ΠΎ?

ΠΈΠ· словаря Π΄Π°Π½Π½Ρ‹Ρ… для получСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ.
Π”ΡƒΠΌΠ°ΡŽ Π½Π΅ Π½Π°Π΄ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ минусы ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π»ΡƒΡ‡ΡˆΠ΅ расскаТу ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠ΅.

Π₯ΡŒΡŽΡΡ‚ΠΎΠ½ Ρƒ нас ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Π£Π²ΠΈΠ΄Π΅Π² ΡΡ‚ΠΎΠ»ΡŒ ΠΏΠ»Π°Ρ‡Π΅Π²Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ я ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ ΠΊΡ€Π°ΠΉΠ½Π΅ расстроился, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ покопавшись Π² исходниках я понял, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это просто β€” Π½Π΅ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚. Но это Π±Ρ‹Π»ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всС.

Π§Π΅ΠΌ дальшС Π² лСс Ρ‚Π΅ΠΌ большС Π΄Ρ€ΠΎΠ²

Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ dict_update_statistics которая вычисляСт статистику ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ вас удивят. ΠŸΡ€ΠΈ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹Ρ… настройка Π‘Π£Π‘Π” пСрСсчСт статистики Π½Π΅ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ, Π° производится ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅.
Π’ свСтС сказанного Π²Ρ‹ΡˆΠ΅ Ρ€Π°Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π±Π°Π³Π° #19588

Π›ΠΎΠΆΠΊΠ° ΠΌΠ΅Π΄Π° Π² Π±ΠΎΡ‡ΠΊΡƒ дСгтя

Π‘ΠΊΠΎΡ€ΠΎ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ MySQL 5.6 Ρ‚Π°ΠΌ ΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‚ ΠΊΡƒΡ‡Ρƒ всСго ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎ
β€” статичСский ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ для INFORMATION_SCHEMA (ΡƒΠΆ Π½Π΅ знаю Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Ρ‚Π°ΠΌ прСдставлСниС partitions Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π½Π° это надСюсь)
β€” конструкция select * from table partition (p1) ΠΏΡ€ΠΈ использовании ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ partition pruning Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ установка Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† Π² mySQL

Начиная с вСрсии 5.1 mySQL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†. Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅? ΠŸΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (partitioning) β€” это Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† Π½Π° логичСскиС части ΠΏΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΌ критСриям.. На Π½ΠΈΠΆΠ½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ для myISAM Ρ‚Π°Π±Π»ΠΈΡ†, это физичСски Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΏΠΎ 3 Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ (описаниС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ„Π°ΠΉΠ» индСксов, Ρ„Π°ΠΉΠ» Π΄Π°Π½Π½Ρ‹Ρ…). Для innoDB Ρ‚Π°Π±Π»ΠΈΡ† Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ – Ρ€Π°Π·Π½Ρ‹Π΅ пространства Ρ‚Π°Π±Π»ΠΈΡ† Π² Ρ„Π°ΠΉΠ»Π°Ρ… innoDB (Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ innoDB позволяСт Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†).

CREATE TABLE orders_range (
customer_surname VARCHAR(30),
store_id INT,
salesperson_id INT,
order_date DATE,
note VARCHAR(500)
) ENGINE = MYISAM
PARTITION BY RANGE( YEAR(order_date) ) (
PARTITION p_old VALUES LESS THAN(2008),
PARTITION p_2008 VALUES LESS THAN(2009),
PARTITION p_2009 VALUES LESS THAN(MAXVALUE)
);

Π§Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ? ΠŸΠ΅Ρ€Π²Π°Ρ Β«Ρ‚Π°Π±Π»ΠΈΡ†Π°Β» Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π° Β«Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹ΠΉΒ» ΠΏΠ΅Ρ€ΠΈΠΎΠ΄, Π΄ΠΎ 2008Π³ΠΎ Π³ΠΎΠ΄Π°, вторая β€” Π·Π° 2008ΠΉ Π³ΠΎΠ΄, ΠΈ Β«Ρ‚Ρ€Π΅Ρ‚ΡŒΡΒ» β€” всС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅.

Π‘Π°ΠΌΠΎΠ΅ вкусноС β€” запросы ΠΏΡ€ΠΈ этом ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ/ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

select * from orders_range where order_date=’2009-08-01′;

И Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом происходит:

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этого запроса Ρ€Π°Π±ΠΎΡ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ с Β«ΠΏΠΎΠ΄Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉΒ» p_2008.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ускорСниС достигаСтся Π΄Π°ΠΆΠ΅ Π² случаС выполнСния запросов, Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… всС Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎ всСх партициях β€” вСдь Π² этом случаС сначала происходит пСрвичная Β«ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Β» Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΠΎ мСньшС, ΠΏΠΎΡ‚ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΈ производятся Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ вычислСния. Π’Π°ΠΊ Π²ΠΎΡ‚ ΠΊΠ°ΠΊ Ρ€Π°Π· Β«ΠΏΠ΅Ρ€Π²Ρ‹Π΅Β» этапы, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС.

КакиС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ прСимущСства?

Π“Π»Π°Π²Π½Ρ‹ΠΌ прСимущСством я Π±Ρ‹ Π½Π°Π·Π²Π°Π» Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ партиция с Β«ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈΒ» Π΄Π°Π½Π½Ρ‹ΠΌΠΈ (Ρ‚.Π΅. послСдними, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто происходит Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°) ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΈ ΠΊΠ°ΠΊ слСдствиС, ΠΌΠΎΠ³ΡƒΡ‚ постоянно находится Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π»ΠΎΠ³ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ ΠΈΠ΄Π΅Ρ‚ запись ΠΈ ТСсткиС диски Π½Π΅ ΡƒΡΠΏΠ΅Π²Π°ΡŽΡ‚, Π° ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅ΠΉΠ΄ Π²Π°ΠΌ Π½Π΅ позволяСт рСлигия, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ доступный Π²Π°ΠΌ ТСсткий диск. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° всС ТСсткиС диски.

КакиС способы «раздСлСния» Π΄Π°Π½Π½Ρ‹Ρ… прСдоставляСт mySQL?

По Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

PARTITION BY RANGE (store_id) (
PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN (20),
PARTITION p3 VALUES LESS THAN (30)
);

По Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ списку Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

PARTITION BY LIST(store_id) (
PARTITION pNorth VALUES IN (3,5,6,9,17),
PARTITION pEast VALUES IN (1,2,10,11,19,20)
)

Π—Π°Ρ‡Π΅ΠΌ, спроситС Π²Ρ‹? Π Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΠ±ΠΎ исходя ΠΈΠ· сообраТСний ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ (Ρ‡Ρ‚ΠΎ Ρ‡Π°Ρ‰Π΅) Π»ΠΈΠ±ΠΎ исходя ΠΈΠ· сообраТСний ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ записи (Ρ€Π΅ΠΆΠ΅). БоотвСтствСнно, ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” это ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π° максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ количСство ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ 90% всСх Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ происходило Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ. И Ссли Ρƒ вас слоТная Π»ΠΎΠ³ΠΈΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ располоТСнныС Π² сСвСрных ΠΊΠ²Π°Ρ€Ρ‚Π°Π»Π°Ρ… Π³ΠΎΡ€ΠΎΠ΄Π°, ID ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ΄ΡƒΡ‚ Π² Ρ€Π°Π·Π½ΠΎΠ±ΠΎΠΉ) Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ смысл ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ.

PARTITION BY HASH(store_id)
PARTITIONS 4;

Π’Ρ‹ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ управляСтС ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, просто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ полю ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ…Π΅Ρˆ ΠΈ сколько Β«ΠΏΠΎΠ΄Ρ‚Π°Π±Π»ΠΈΡ†Β» ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ. Π—Π°Ρ‡Π΅ΠΌ? Π“ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС происходит Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ полю. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях позволяСт Π΄ΠΎΡΡ‚ΠΈΠ³Π½ΡƒΡ‚ΡŒ Β«Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ разброса» ΠΈ ускорСния записи Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠΎΡ‡Ρ‚ΠΈ Ρ‚ΠΎ ΠΆΠ΅ самоС Ρ‡Ρ‚ΠΎ ΠΈ HASH, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ β€” ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ.

PARTITION BY KEY(s1)
PARTITIONS 10;

Π’.Π΅. Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ полю происходит максимально эффСктивно.

Но Ρ‚ΡƒΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ слСдуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ со способом партицирования. Π₯ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для счСтчика посСтитСлСй, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈΠ½ являСтся СдинствСнным ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

НСт Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ партицирования. Π­Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Π½Ρ‹Π΅ столбцы (поля) находятся Π² Ρ€Π°Π·Π½Ρ‹Ρ… Β«ΠΏΠΎΠ΄Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…Β». ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠ½ΠΎΠ³Π΄Π° это Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ этого ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡƒΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ: Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π° Π΄Π²Π΅, связав ΠΈΡ… ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ. Если Π²Π°ΠΌ совсСм хочСтся красоты β€” ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎ Π½ΠΈΠΌ VIEW, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ старыС части ΠΊΠΎΠ΄Π°.

Π—Π°Ρ‡Π΅ΠΌ это Π΄Π΅Π»Π°Ρ‚ΡŒ? НапримСр, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π³Π΄Π΅ Ρƒ вас Π² основном числа ΠΈ Π΄Π°Ρ‚Ρ‹, Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ VARCHAR (255) для ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° порядок Ρ€Π΅ΠΆΠ΅ Ρ‡Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ поля. Π’ случаС Ссли Π΅Π³ΠΎ вынСсти Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€ строки (mySQL смоТСт ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎΠΉ строки ΠΏΠΎ индСксу Π² Ρ„Π°ΠΉΠ»Π΅ Π΄Π°Π½Π½Ρ‹Ρ…). Π’Π°Π±Π»ΠΈΡ†Π° станСт Π±ΠΎΠ»Π΅Π΅ устойчивой ΠΊ сбоям Π² случаС Π²Π½Π΅ΡˆΡ‚Π°Ρ‚Π½Ρ‹Ρ… ситуаций (ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΈΠ·-Π·Π° фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° строки). Ну ΠΈ сущСствСнно ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡΡ сам Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

И заканчивая ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π±ΠΎΠ»Π΅Π΅ Β«Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎΒ» партицирования Ρ‚Π°Π±Π»ΠΈΡ† β€” помСсячно. Π’Π°ΠΊ ΠΊΠ°ΠΊ LIST/RANGE ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ цСлочислСнныС значСния, Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ исхитрится:

PARTITION BY RANGE( TO_DAYS(order_date) ) (
PARTITION y2009m1 VALUES LESS THAN( TO_DAYS(‘2009-02-01’) ),
PARTITION y2009m2 VALUES LESS THAN( TO_DAYS(‘2009-03-01’) ),
PARTITION y2009m3 VALUES LESS THAN( TO_DAYS(‘2009-04-01’) )
);

PS: Π’ mysql всСгда приходится Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Β«ΠΈΡΡ…ΠΈΡ‚Ρ€ΠΈΡ‚ΡŒΡΡΒ», Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ скучно с Π½Π΅ΠΉ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠΊΠΎΠ³Π΄Π°, Π° ΠΌΡ‹ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ останСмся Π±Π΅Π· Ρ€Π°Π±ΠΎΡ‚Ρ‹ πŸ™‚

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Partitioned Tables and Indexes

SQL Server ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ сСкционированиС Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ индСксов. Π”Π°Π½Π½Ρ‹Π΅ сСкционированных Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ индСксов дСлятся Π½Π° Π±Π»ΠΎΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π½Π½Ρ‹Π΅ ΡΠ΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ, поэтому Π³Ρ€ΡƒΠΏΠΏΡ‹ строк ΡΠΎΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ сСкциями. ВсС сСкции ΠΎΠ΄Π½ΠΎΠ³ΠΎ индСкса ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°Π±Π»ΠΈΡ†Π° ΠΈΠ»ΠΈ индСкс Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Сдиная логичСская ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ запросов ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ. Π”ΠΎ вСрсии SQL Server 2016 (13.x); SP1 сСкционированныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ индСксы Π±Ρ‹Π»ΠΈ доступны Π½Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ выпускС SQL Server. БвСдСния ΠΎ функциях, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ выпусками SQL Server, см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ВозмоТности, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ выпусками SQL Server 2016.

SQL Server ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΄ΠΎ 15 000 сСкций. Π’ вСрсиях, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… SQL Server 2012 (11.x), количСство сСкций ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Ρ‹Π»ΠΎ Ρ€Π°Π²Π½ΠΎ 1000.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° сСкционирования

Π‘Π΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ»ΠΈ индСксов ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства Π² управляСмости ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π­Ρ‚ΠΎ позволяСт быстро ΠΈ эффСктивно ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ подмноТСства Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ, сохраняя ΠΏΡ€ΠΈ этом Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, такая опСрация, ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· OLTP Π² систСму OLAP, выполняСтся Π·Π° сСкунды, Π° Π½Π΅ Π·Π° ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΈ часы, ΠΊΠ°ΠΊ Π² случаС нСсСкционированных Π΄Π°Π½Π½Ρ‹Ρ….

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ обслуТивания ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ быстрСС с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ нСсколькими сСкциями. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ эффСктивны, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠ΄Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ со всСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько сСкций ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ нСсколько сСкций индСкса.

МоТно ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния запросов Π² зависимости ΠΎΡ‚ запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ часто Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² вашСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ оборудования. НапримСр, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ запросов ΠΌΠΎΠΆΠ΅Ρ‚ быстрСС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ запросы Π½Π° эквисоСдинСниС Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ сСкционированных Ρ‚Π°Π±Π»ΠΈΡ†, Ссли столбцы сСкционирования Ρ‚Π΅ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ столбцы для объСдинСния Ρ‚Π°Π±Π»ΠΈΡ†. Π‘ΠΌ. ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ запросах.

Π’ процСссС сортировки Π΄Π°Π½Π½Ρ‹Ρ… для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Π² SQL Server сначала проводится сортировка Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сСкциям. Для ускорСния сортировки Π΄Π°Π½Π½Ρ‹Ρ… рСкомСндуСтся Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² сСкциях ΠΏΠΎ нСскольким ТСстким дискам, создав RAID. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, нСсмотря Π½Π° сортировку Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ сСкциям, SQL Server смоТСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ доступ ΠΊΠΎ всСм ТСстким дискам ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСкции.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, примСняя Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ сСкций, Π° Π½Π΅ всСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ состязаниС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ примСнСния укрупнСния Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΊ сСкциям, Π·Π°Π΄Π°ΠΉΡ‚Π΅ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° LOCK_ESCALATION инструкции ALTER TABLE Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ AUTO.

Π‘Π΅ΠΊΡ†ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ индСкса ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΉ ( PRIMARY ) ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΠ°Ρ…. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ использованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ позволяСт Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ сСкции ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ уровням Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. ВсС ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ прСимущСства сСкционирования ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ нСзависимо ΠΎΡ‚ количСства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ ΠΈΠ»ΠΈ размСщСния сСкций Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏΠ°Ρ….

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ основныС понятия

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ относятся ΠΊ ΡΠ΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ индСксов.

Ѐункция сСкционирования

Π‘Ρ…Π΅ΠΌΠ° сСкционирования

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сопоставляСт сСкции Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сСкционирования Π½Π°Π±ΠΎΡ€Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ. Главная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сСкции Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² нСобходимости нСзависимого Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования этих сСкций, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ всСгда выполняСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ.

Π’ Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… SQL Azure ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹.

Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ† сСкционирования

Π’Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹ΠΉ индСкс

ИндСкс, созданный Π½Π° основС Ρ‚ΠΎΠΉ ΠΆΠ΅ схСмы сСкционирования, Ρ‡Ρ‚ΠΎ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π°. Когда Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈ Π΅Π΅ индСксы Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Ρ‹, SQL Server ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈ обслуТивании структуры сСкционирования ΠΊΠ°ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Ρ‚Π°ΠΊ ΠΈ индСксов быстро ΠΈ эффСктивно ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ сСкции. Для выравнивания с Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ индСксу Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сСкционирования с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сСкционирования индСкса ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сущСствСнно Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ:

Π‘Π΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ кластСризованных индСксов

ΠŸΡ€ΠΈ сСкционировании кластСризованного индСкса столбСц сСкционирования Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΊΠ»ΡŽΡ‡Π΅ кластСризации. ΠŸΡ€ΠΈ сСкционировании Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ кластСризованного индСкса, Ссли столбСц сСкционирования Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ явно Π² ΠΊΠ»ΡŽΡ‡Π΅ кластСризации, SQL Server ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ добавляСт столбСц сСкционирования Π² список ΠΊΠ»ΡŽΡ‡Π΅ΠΉ кластСризованного индСкса. Если кластСризованный индСкс являСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ, для Π½Π΅Π³ΠΎ слСдуСт явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ столбца сСкционирования Π² ΠΊΠ»ΡŽΡ‡Π΅ кластСризованного индСкса. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ кластСризованных индСксах ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ индСксов см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠŸΡ€Π°Π²ΠΈΠ»Π° проСктирования кластСризованного индСкса.

Π‘Π΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ нСкластСризованных индСксов

ΠŸΡ€ΠΈ сСкционировании ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ нСкластСризованного индСкса столбСц сСкционирования Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² ΠΊΠ»ΡŽΡ‡Π΅ индСкса. ΠŸΡ€ΠΈ сСкционировании Π½Π΅ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ нСкластСризованного индСкса SQL Server ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ добавляСт столбСц сСкционирования ΠΊΠ°ΠΊ Π½Π΅ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ) столбСц индСкса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ индСкса с Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. Если столбСц сСкционирования ΡƒΠΆΠ΅ присутствуСт Π² индСксС, SQL Server Π΅Π³ΠΎ Π½Π΅ добавляСт. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ нСкластСризованных индСксах ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ индСксов см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ созданию нСкластСризованных индСксов.

НСвыровнСнный индСкс

ИндСкс, сСкционированный нСзависимо ΠΎΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’. Π΅. индСкс ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ схСму сСкционирования ΠΈΠ»ΠΈ находится Π½Π΅ Π² Ρ‚ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅, Π³Π΄Π΅ находится базовая Ρ‚Π°Π±Π»ΠΈΡ†Π°. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½ΠΎΠ³ΠΎ сСкционированного индСкса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… случаях:

УстранСниС сСкций

ΠŸΡ€ΠΎΡ†Π΅ΡΡ, Π² Ρ…ΠΎΠ΄Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ запросов обращаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ сСкциям Π² соотвСтствии с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ запроса.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π‘ΠΎΠ»Π΅Π΅ высокоС Π½ΠΎΠ²ΠΎΠ΅ максимальноС количСство сСкций (15 000) влияСт Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с сСкционированными индСксами, ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ DBCC ΠΈ запросы. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ влияСт Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ созданиС Π±ΠΎΠ»Π΅Π΅ 1 000 сСкций ΠΈ ΠΊΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ максимального количСства сСкций Π΄ΠΎ 15 000 позволяСт дольшС Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Однако рСкомСндуСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€ΠΎΠ²Π½ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, сколько трСбуСтся, ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ баланс ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ количСством сСкций.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ процСссорных ядСр ΠΈ числа сСкций

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ максимальной ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, рСкомСндуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ число сСкций ΠΈ процСссорных ядСр совпадало, Π½ΠΎ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π»ΠΎ 64 (это максимальноС число ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссоров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ SQL Server ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ).

ИспользованиС памяти ΠΈ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΈ большом количСствС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… сСкций рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠžΠ—Π£ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 16 Π“Π‘. Если Ρƒ систСмы нСдостаточно памяти, Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ сбой инструкций языка ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (DML), инструкций языка описания Π΄Π°Π½Π½Ρ‹Ρ… (DDL) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠ·-Π·Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти. Π’ систСмах с ΠžΠ—Π£ 16 Π“Π‘ ΠΈ большим количСством процСссов, интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ сбои ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π° большом количСствС сСкций, ΠΈΠ·-Π·Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‡Π΅ΠΌ большС Ρƒ вас памяти свСрх 16 ΠœΠ‘, Ρ‚Π΅ΠΌ мСньшС Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ SQL Server ΠΏΡ€ΠΈ построСнии сСкционированного индСкса ΠΈ Π΄Π°ΠΆΠ΅ Π½Π° саму Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ построСния. Π’Π°ΠΊΠΎΠ΅ случаСтся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° индСкс Π½Π΅ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½ со своСй Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΈΠ»ΠΈ со своим кластСризованным индСксом, Ссли Ρ‚Π°ΠΊΠΎΠΉ сущСствуСт Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π’ этом случаС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСрвСра index create memory. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Настройка ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСрвСра index create memory.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с сСкционированными индСксами

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ пСрСстройка Π½Π΅Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹Ρ… индСксов для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, количСство сСкций Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 1000, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сниТСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΡŽ памяти Π²ΠΎ врСмя Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ пСрСстройка Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹Ρ… индСксов ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния количСства сСкций. НС рСкомСндуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ создания ΠΈ пСрСстройки индСкса, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

ΠŸΡ€ΠΈ сортировкС, выполняСмой ΠΏΡ€ΠΈ построСнии сСкционированных индСксов, SQL Server сначала создаСт для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСкции ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сортировки. Π—Π°Ρ‚Π΅ΠΌ Π»ΠΈΠ±ΠΎ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСкции, Π»ΠΈΠ±ΠΎ Π² tempdb, Ссли Π·Π°Π΄Π°Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ индСкса SORT_IN_TEMPDB, производится построСниС Ρ‚Π°Π±Π»ΠΈΡ† сортировки. Для всСх Ρ‚Π°Π±Π»ΠΈΡ† сортировки трСбуСтся ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ объСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. ΠŸΡ€ΠΈ построСнии сСкционированного индСкса, Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½ΠΎΠ³ΠΎ со своСй Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ сортировки ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π° Ρ€Π°Π·, экономно расходуя ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Однако ΠΏΡ€ΠΈ построСнии Π½Π΅Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½ΠΎΠ³ΠΎ сСкционированного индСкса Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ сортировки ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ достаточный объСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ. Π§Π΅ΠΌ большС число сСкций, Ρ‚Π΅ΠΌ большС трСбуСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· сСкций Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ сортировки составляСт Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 40 страниц, ΠΏΠΎ 8 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ каТдая. НапримСр, для Π½Π΅Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½ΠΎΠ³ΠΎ сСкционированного индСкса, Ρ€Π°Π·Π±ΠΈΡ‚ΠΎΠ³ΠΎ Π½Π° 100 сСкций, потрСбуСтся объСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти для ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ сортировки 4 000 страниц (40*100). Если Ρ‚Π°ΠΊΠΎΠΉ объСм памяти доступСн, опСрация создания Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Если ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠΉ объСм памяти нСдоступСн, опСрация построСния Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ошибкой. Для Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½ΠΎΠ³ΠΎ сСкционированного индСкса, Ρ€Π°Π·Π±ΠΈΡ‚ΠΎΠ³ΠΎ Π½Π° 100 сСкций, для сортировки потрСбуСтся всСго 40 страниц, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сортировки ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

Как для Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ для Π½Π΅Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹Ρ… индСксов ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ больший объСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Ссли SQL Server примСняСт стСпСни ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° для выполнСния Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π° многопроцСссорном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π§Π΅ΠΌ большС ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, Ρ‚Π΅ΠΌ большС трСбуСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. НапримСр, Ссли для SQL Server ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° 4, Ρ‚ΠΎ Π½Π΅Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½ΠΎΠΌΡƒ сСкционированному индСксу, содСрТащСму 100 сСкций, потрСбуСтся Ρ‚Π°ΠΊΠΎΠΉ объСм памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ процСссора ΠΌΠΎΠ³Π»ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ 4 000 страниц, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 16 000 страниц. Если сСкционированный индСкс Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½, трСбования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΡΠ½ΠΈΠΆΠ°ΡŽΡ‚ΡΡ Π΄ΠΎ 40 страниц для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… процСссоров, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 160 страниц (4*40). Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° индСкса MAXDOP ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ DBCC

ΠŸΡ€ΠΈ большСм количСствС сСкций Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ DBCC ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния количСства сСкций.

Запросы

Запросы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ устранСния сСкций, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΠΌΡƒΡŽ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ с большим числом сСкций. Запросы, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ устранСния сСкций, ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния количСства сСкций.

Запросы, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΠΊΠ°ΠΊ TOP ΠΈΠ»ΠΈ MAX/MIN, Π² столбцах, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ столбца сСкционирования, ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ со сниТСниСм ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈ сСкционировании, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ всС сСкции.

ΠŸΡ€ΠΈ частом Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ запросов Π½Π° эквивалСнтноС соСдинСниС Π΄Π²ΡƒΡ… ΠΈ Π±ΠΎΠ»Π΅Π΅ сСкционированных Ρ‚Π°Π±Π»ΠΈΡ†, ΠΈΡ… сСкционированныС столбцы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ со столбцами, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ производится соСдинСниС. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ: Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ ΠΈΡ… индСксы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ упорядочСны. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈΠ±ΠΎ общая имСнованная функция сСкционирования, Π»ΠΈΠ±ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅, Π½ΠΎ Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’ΠΎ Π΅ΡΡ‚ΡŒ:

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сСкций ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запросов см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π‘Π΅ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ индСксы.

ИзмСнСния Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΈ статистичСских вычислСниях Π²ΠΎ врСмя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с сСкционированным индСксом

БвязанныС Π·Π°Π΄Π°Ρ‡ΠΈ

ЗаданияРаздСл
Описано, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сСкционирования ΠΈ схСмы сСкционирования ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈΠ»ΠΈ индСксу.Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сСкционированных Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ индСксов

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎ стратСгиям сСкционированных Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ индСксов ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ внСдрСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

MySQL ΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ вспомнил ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΎΡ‡Π΅Π½ΡŒ спСцифичном Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ΅ ΠΈ систСмС ΠΏΠΎ сбору статистики ΠΏΠΎ событиям. На Π΄Π²ΠΎΡ€Π΅ 21 Π²Π΅ΠΊ ΠΈ я знаю ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ClickHouse, Π½ΠΎ Π²ΠΎΡ‚ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊ Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π‘Π” (ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΌΠ½Π΅ нСпонятна ΠΈ Π½Π΅ извСстна, рСлигия, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π½Π΅ позволяСт), Π΄Π° ΠΈ ΠΏΡƒΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ, я Π΅Π³ΠΎ нСсколько Ρ€Π°Π· ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π» ΠΎ послСдствиях. Когда станСт ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ совсСм, осознаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

Π‘ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Но Ρ€Π΅Ρ‡ΡŒ Π½Π΅ ΠΎΠ± этом. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ я вспомнил ΠΎΠ± этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с 7 000 000 записями. На prod стэндС Ρ‚Π°ΠΌ ΡƒΠΆΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС записСй.

Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ использовался ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, ΠΏΠΎ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ счСту Ρ‚Π°ΠΌ лишний. НСт смысла Π² Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° систСмС Π΄Π΅Π»Π°Ρ‚ΡŒ ΡˆΠ°Ρ€Π΄ΠΈΠ½Π³ Π΄Π° Π΅Ρ‰Π΅ ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ мСсяц своя Ρ‚Π°Π±Π»ΠΈΡ†Π°).

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², Π½Π° самом Π΄Π΅Π»Π΅ Π±Ρ‹Π»ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ самый ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ: Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ dYm (date Year month), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ Ρ‚Π°ΠΊ ΡƒΠΆΠ΅ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ врСмя, Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этого Π½Π΅ составило Ρ‚Ρ€ΡƒΠ΄Π°. ΠŸΡ€Π°Π²Π΄Π° с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° сСрвСрС ΠΌΠ°Π»ΠΎ памяти, Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π½ΡƒΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с партициями (Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ ΡƒΠ±Ρ€Π°Π»):

Как Π±Ρ‹Π»ΠΎ описано Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅, Ρ‡Ρ‚ΠΎ я ΠΏΡ€ΠΈΠ²Π΅Π» ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ, ΠΏΠ»ΡŽΡΡ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ дСлСния ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹:

ΠŸΠΎΡ‡ΠΈΡ‚Π°Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ само собой: Π½Π°ΠΌ Π² запросС Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ поиск Ρ‡Π΅Ρ€Π΅Π· between ΠΏΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Ρƒ. Π’ ΠΈΡ‚ΠΎΠ³Π΅, Ссли Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ всС запросы Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅:

Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ explain:

SIMPLE event_list_test p201709,p201710 range PRIMARY,time PRIMARY 8 NULL 145875 11.11 Using where

Π§Π΅Π³ΠΎ ΠΆΠ΅ ΠΌΡ‹ добились?

А добились ΠΌΡ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† Π² PostgreSQL: Ρ‡Π΅ΠΊ-лист для старта

Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ† Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… сильно выросла ΠΈ врСмя выполнСния запросов ΠΊ этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΎΡΡŒ. Одним ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² PostgreSQL являСтся ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π½ΠΎ ΠΈ опишСм этапы ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ Π±Π°Ρ‚ΠΎΠ½ Ρ…Π»Π΅Π±Π°. ΠŸΠΎΡ€Π΅ΠΆΠ΅ΠΌ Π΅Π³ΠΎ Π½Π° части. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Ρ€Π΅Π·Π°Π½Π½Ρ‹ΠΉ кусочСк β€” Ρ‡Π°ΡΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ³ΠΎ Π±Π°Ρ‚ΠΎΠ½Π°, Π½ΠΎ Π½Π΅ сам Π±Π°Ρ‚ΠΎΠ½. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈ Ρ†Π΅Π»ΠΎΠ΅ Π½Π° части β€” это ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π‘Π°Ρ‚ΠΎΠ½ ΠΊΠ°ΠΊ Ρ†Π΅Π»ΠΎΠ΅ соотвСтствуСт Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π° кусочки Π±Π°Ρ‚ΠΎΠ½Π° ΠΊΠ°ΠΊ части β€” партициям этой Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ партиция Π² sql. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ партиция Π² sql. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ партиция Π² sql. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ партиция Π² sql. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ партиция Π² sql

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ кусочки Π±Π°Ρ‚ΠΎΠ½Π° Π½Π΅ Ρ€Π°Π²Π½Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ собой: ΠΎΠ΄Π½ΠΈ Ρ‚ΠΎΠ½ΡŒΡˆΠ΅, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΎΠ»Ρ‰Π΅, Ρƒ ΠΎΠ΄Π½ΠΈΡ… ΠΊΠΎΡ€ΠΎΡ‡ΠΊΠΈ Π½Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠ΄Π½ΠΎΠΉ стороны, Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… β€” с Π΄Π²ΡƒΡ… сторон ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°ΠΊ ΠΆΠ΅ ΠΈ с партициями: ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ количСство строк, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° дискС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΌ. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° партицируСтся построчно.

Π’Π°Π±Π»ΠΈΡ†Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. ΠŸΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ‚ связь с мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΈ прСдставляСт собой ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊ самой ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅: SELECT, INSERT (Ссли Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ), UPDATE, DELETE. Допустимы ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ обслуТивания (VACUUM, ANALYZE), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ измСнСнию схСмы Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (ALTER), ΠΏΡ€Π°Π²Π΄Π°, с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ограничСния (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ см. ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ).

ЗабСгая Π²ΠΏΠ΅Ρ€Ρ‘Π΄, ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· наслСдованиС Π½Π΅Ρ‚ нСобходимости ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ прилоТСния: обращСния Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊ мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Π΅. PostgreSQL ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ опрСдСляСт, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ партициям слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, Ссли Π΅ΡΡ‚ΡŒ такая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ партициям.

КакиС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅?

ускорСниС Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…;

ускорСниС вставки Π΄Π°Π½Π½Ρ‹Ρ…;

ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ удалСния старых Π΄Π°Π½Π½Ρ‹Ρ…;

ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ обслуТивания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” Π½Π΅ панацСя. Как ΠΈ с Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ инструмСнтом, Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ автоматичСски, Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ускорСния Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ ΠΈΠ»ΠΈ вставки Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сильно зависит ΠΎΡ‚ структуры Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… индСксов, критСрия партицирования, Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… условий.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ процСсс ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ старых Π΄Π°Π½Π½Ρ‹Ρ…: выполняСм DELETE FROM ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ запускаСм ΠΏΠΎΠ»Π½ΡƒΡŽ Π²Π°ΠΊΡƒΡƒΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ (VACUUM FULL) с простоСм (ΠΏΡ€ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π²Π°ΠΊΡƒΡƒΠΌ Π±Π΅Π· простоя см. pg_repack). ОбС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π° сСрвСр Π‘Π” ΠΈ слабо ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹: нСльзя ΠΏΠΎΠ½ΡΡ‚ΡŒ прогрСсс выполняСмой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ случаС партицирования (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΠΎ полю created_at Π»ΠΈΠ±ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΌΡƒ) ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ старых Π΄Π°Π½Π½Ρ‹Ρ… Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2-3 сСкунды ΠΈ выполняСтся Ρ‡Π΅Ρ€Π΅Π· ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DROP TABLE.

Π’ случаС упрощСния обслуТивания Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π²Π°ΠΊΡƒΡƒΠΌ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° суммС всСх ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ, Ρ‡Π΅ΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ большой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π’ ΠΊΠ°ΠΊΠΈΡ… случаях ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈΠ±ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ повлияСт?

врСмя создания бэкапа;

врСмя восстановлСния ΠΈΠ· бэкапа;

Π’ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π΄Π²ΡƒΡ… случаях врСмя практичСски Π½Π΅ измСнится, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ выполняСтся ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ послСднСм случаС: Π±Ρ‹Π» 1 ΠΌΠ»Ρ€Π΄ строк, послС партицирования ΠΈΠΌΠ΅Π΅ΠΌ Ρ‚ΠΎΡ‚ ΠΆΠ΅ 1 ΠΌΠ»Ρ€Π΄. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ΅ мСсто Π½Π° дискС Π±ΡƒΠ΄Π΅Ρ‚ практичСски Ρ‚Π΅ΠΌ ΠΆΠ΅.

НСкоторыС ограничСния ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ партицирования

партицируСмая Ρ‚Π°Π±Π»ΠΈΡ†Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ достаточно большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π°; согласно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, рСкомСндуСтся ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² случаС, Ссли Ρ‚Π°Π±Π»ΠΈΡ†Π° прСвосходит Ρ€Π°Π·ΠΌΠ΅Ρ€ физичСской памяти;

Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ нСльзя ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· FOREIGN KEYS (ΠΌΠΎΠΆΠ½ΠΎ, начиная с PostgreSQL 12); ΠΏΡ€ΠΈ этом ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ (партицируСмая Ρ‚Π°Π±Π»ΠΈΡ†Π° ссылаСтся Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅) допустимо;

Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ…ΡƒΠ΄ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° опСрациях чтСния ΠΈ записи; ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, ΠΈΡ‚ΠΎΠ³ΠΈ партицирования сильно зависят ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… условий;

Π² ΠΈΠ΄Π΅Π°Π»Π΅ запрос Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, Π½ΠΎ Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС β€” Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚ всС ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ ΠΈ, Π² зависимости ΠΎΡ‚ настроСк PostgreSQL, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ врСмя выполнСния запроса, ΠΊΠ°ΠΊ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚Π΅.

Π’ΠΈΠ΄Ρ‹ партицирования

Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ появилось Π² PostgreSQL 10. ЯвляСтся встроСнным (built-in) ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ сущСствСнныС ограничСния:

Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΠΊ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ;

нСльзя ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ‡Π΅Ρ€Π΅Π· ALTER TABLE;

ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ простой Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ·-Π·Π° ACCESS EXCLUSIVE LOCK (начиная с PostgreSQL 12, Ρ€Π΅ΠΆΠΈΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π±ΠΎΠ»Π΅Π΅ щадящий: ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ SELECT, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π΅Π· FOR UPDATE/SHARE);

ΠΈΠΌΠ΅Π΅Ρ‚ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ партицирования.

ΠŸΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· наслСдованиС являСтся Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ:

ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ;

Π½Π΅Ρ‚ Π΄Π°ΡƒΠ½Ρ‚Π°ΠΉΠΌΠ° ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ;

ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ любой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ партицирования (ΠΎΠ± этом Π½ΠΈΠΆΠ΅);

Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ мноТСствСнноС наслСдованиС (наслСдованиС схСм Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹);

Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°ΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° сильно Ρ€Π°Π·Ρ€ΠΎΡΠ»Π°ΡΡŒ, поэтому ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ остановимся Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· наслСдованиС.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° партицирования Ρ‡Π΅Ρ€Π΅Π· наслСдованиС

1. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹-ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ с использованиСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова INHERITS:

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹-ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ. Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΊΡ€Π°Ρ‚Π½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ (условиС) партицирования. Π—Π°Π΄Π°Ρ‘ΠΌ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ партицирования для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· CHECK. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, условия для ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹, вставляСмая строка Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° условия ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°ΠΊ нСстрогого нСравСнства, Π° вСрхняя Π³Ρ€Π°Π½ΠΈΡ†Π° β€” строгого.

Если планируСтся разнСсти ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π² мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ партициям, Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ шагС создаём ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ, сколько Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠΌΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ плюс Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° 2-3 мСсяца Π²ΠΏΠ΅Ρ€Ρ‘Π΄. Π˜Π½Π°Ρ‡Π΅ создаём ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ….

2. ДобавляСм индСксы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

3. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅:

ЦСль Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ вставлСна новая строка, Π½Π° основС Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… условий партицирования. Если Ρ‚Π°ΠΊΠΎΠ΅ условиС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, функция сгСнСрируСт ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΎ нСвозмоТности выполнСния ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

4. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊ мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ шаг. Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ обСспСчиваСт вставку Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ. ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… PostgreSQL ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ опрСдСляСт, ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ Π±Ρ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.

5. Разносим Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎ партициям:

Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ WHERE удаляСм Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ (RETURNING) Π² качСствС ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° запрос DELETE FROM. Π­Ρ‚ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для вставки Π² Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ONLY Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ удалСния: Π±Π΅Π· Π½Π΅Π³ΠΎ запрос ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π½ΠΎ ΠΈ ΠΏΠΎ всСм партициям. Π”Π°Π½Π½ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π’ΠžΠ›Π¬ΠšΠž ΠΈΠ· мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… опСрациях с мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ, Ссли Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΈ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ.

Если планируСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Π΅Π· пСрСноса, Ρ‚ΠΎ пропускаСм Π΄Π°Π½Π½Ρ‹ΠΉ шаг.

6. ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌ мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ

Π—Π΄Π΅ΡΡŒ снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ONLY, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π² партициях Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚. Π’ процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ запроса для мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ созданы Π½ΠΎΠ²Ρ‹Π΅ пустыС Π΄Π°Ρ‚Π°-Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ пустыС Ρ„Π°ΠΉΠ»Ρ‹ индСксов, ΠΏΡ€Π΅ΠΆΠ½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹. Π’ Π΄Π°Π½Π½ΠΎΠΌ шагС ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π²Π°ΠΊΡƒΡƒΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ TRUNCATE опСрация ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π²Π°ΠΊΡƒΡƒΠΌΠ° выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° сущСствованиС Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ пустой Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ простой.

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ΠŸΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Ρ€ΠΈ мСсяца, Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°ΡŽΡ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Всё ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π°Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΡ€ΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ. Быстро Π»Π΅Ρ‡ΠΈΠΌ ΠΊΡ€ΠΎΠ½ΠΎΠΌ ΠΈ пСрСписываСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (добавляСм условия ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ). Π§Π΅Ρ€Π΅Π· Π³ΠΎΠ΄ Ρƒ нас ΡƒΠΆΠ΅ 100 ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ, ΠΈ функция Ρ€Π°Π·Ρ€ΠΎΡΠ»Π°ΡΡŒ Π΄ΠΎ Π½Π΅ΠΈΠΌΠΎΠ²Π΅Ρ€Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². ΠžΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ стало слоТнСС. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈ вмСсто этого заставим PostgreSQL ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

ОбъСдиним ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ шага ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π² ΠΎΠ΄ΠΈΠ½. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ:

1. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с автоматичСским созданиСм ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ:

Π’ Π΄Π°Π½Π½ΠΎΠΌ шагС Π½Π° основС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… опрСдСляСм имя ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ относится Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ условия принадлСТности ΠΊ этой ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ (ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ строки Π±Π»ΠΎΠΊΠ° BEGIN). ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ сущСствованиС Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ (TO_REGCLASS), ΠΈ Ссли Π΅Ρ‘ Π½Π΅Ρ‚ β€” создаём ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ ΠΈ индСксы ΠΊ Π½Π΅ΠΉ (EXECUTE FORMAT … CREATE TABLE, ALTER TABLE, CREATE INDEX). Π’ ΠΊΠΎΠ½Ρ†Π΅ вставляСм Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ. БоотвСтствСнно, Ссли партиция сущСствуСт, Ρ‚ΠΎ просто вставляСм Π² Π½Π΅Ρ‘ Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΊ мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

3. Разносим Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎ партициям.

4. ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌ мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ,

вмСсто 6 шагов ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ Π΄ΠΎ 4;

Π½Π΅Ρ‚ нСобходимости Π² пСриодичСском Ρ€ΡƒΡ‡Π½ΠΎΠΌ, Π»ΠΈΠ±ΠΎ полуавтоматичСском (Ρ‡Π΅Ρ€Π΅Π· cron) создании ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ;

функция сущСствСнно ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΠ»Π°ΡΡŒ (Π΄Π°, всё Ρ‚Π°ΠΊ: 100 if’ов для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ if’а Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ сущСствования ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ β€” это Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅);

ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ схСмы мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ функция ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΠ»Π°ΡΡŒ, появились ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ шаги ΠΏΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ созданию ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ β€” это ΠΆΠ΅ всё ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Но, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду, эта опСрация фактичСски выполняСтся Ρ€Π°Π· Π² мСсяц (Π² случаС помСсячного разбиСния). Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠ°ΠΊ Π΄Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, Π΄Π°ΠΆΠ΅ вставка Π΄Π°Π½Π½Ρ‹Ρ… Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ускорСна, нСсмотря Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы.

На этом ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ, вСдь с тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΌΡ‹ всё сдСлали: создали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‚ΠΈΠ»ΠΈ Π΅Ρ‘ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΏΡ€ΠΈ нСобходимости пСрСнСсли Π΄Π°Π½Π½Ρ‹Π΅. Однако Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ ΠΌΡ‹ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ? Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ этот ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ шаг Π² ΠΎΠ΄ΠΈΠ½ мСсяц? Π§Ρ‚ΠΎ Π΅Ρ‰Ρ‘ ΠΌΡ‹ Π½Π΅ ΡƒΡ‡Π»ΠΈ?

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся с этими вопросами!

Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ Ρ‡Π΅ΠΊ-лист партицирования

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ, вСроятно, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Какой ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ ΠΎΡ‚ партицирования? ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅? Рассматривали Π»ΠΈ Π²Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ? ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ стоит Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΊΠΎΠ΄Π°? Или Π½Π° сСрвСрС Π‘Π” ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½ΠΎΠ΅ ΠΆΠ΅Π»Π΅Π·ΠΎ? Или просто Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ индСкса? Π˜Π½Ρ‹ΠΌΠΈ словами, Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρƒ вас Ρ†Π΅Π»ΡŒ? Π‘Π΅Π· Ρ†Π΅Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ партицирования Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ простоями ΠΈ ΡƒΡ…ΡƒΠ΄ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ†Π΅Π»ΡŒ β€” Ρ€Π΅ΡˆΠ°Π΅ΠΌΠ°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Ссли ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π±Ρ‹Π»ΠΈ рассмотрСны ΠΈ ΠΎΡ‚Π²Π΅Ρ€Π³Π½ΡƒΡ‚Ρ‹ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡŽΡΡŒ, ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” Π½Π΅ панацСя, ΠΈ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ даст Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚.

Π”Π°Π»Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ самый часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ запрос Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях трСбуСтся Π½Π°ΠΉΡ‚ΠΈ самый тяТёлый запрос). Π’ этом ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ.

Π’ запросС смотрим, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ выполняСтся Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°. Если Π² условии Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° выполняСтся ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ полю, Ρ‚ΠΎ это ΠΏΠΎΠ»Π΅ β€” СдинствСнный ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π² ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ партицирования. Если ΠΆΠ΅ ΠΏΠΎΠ»Π΅ΠΉ Π² условии нСсколько, Ρ‚ΠΎ Π»ΠΈΠ±ΠΎ пытаСмся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ побСдитСля, просмотрСв Ρ‚ΠΎΠΏ запросов, Π»ΠΈΠ±ΠΎ всС поля Π² условии считаСм ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°ΠΌΠΈ Π² ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ партицирования. Π’ любом спорном случаС провСряСм, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ Π±ΠΎΠ»Π΅Π΅ всСго согласуСтся с поставлСнной Ρ†Π΅Π»ΡŒΡŽ.

НапримСр, Π² самом часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰Π΅ΠΌΡΡ запросС Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° выполняСтся ΠΏΠΎ полям id ΠΈ created_at. Π’ΠΎΠΏ запросов Π½Π΅ выявил побСдитСля. Если Ρ†Π΅Π»ΡŒ партицирования β€” ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ старых Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎΠ³Π΄Π° Π² качСствС критСрия партицирования Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠΎΠ»Π΅ created_at. Если ΠΆΠ΅ Ρ†Π΅Π»ΡŒ β€” ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ…, β€” скорСС всСго, ΠΏΠΎΠ»Π΅ id Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΡ‡ΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

Однако, Π΅ΡΡ‚ΡŒ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ. Но, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· наслСдованиС позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ сцСнарий, Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° слСдуСт ΠΎΠΏΠ°ΡΠ°Ρ‚ΡŒΡΡ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ услоТняСт ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, это Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π²Π΅Π΄Ρ‘Ρ‚ ΠΊ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов ΠΏΡ€ΠΈ вставкС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ вставки.

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, общая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ послС Ρ‚Π°ΠΊΠΎΠ³ΠΎ партицирования скорСС всСго Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ снизится. Но ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡŽΡΡŒ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сильно зависит ΠΎΡ‚ структуры Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… индСксов, критСрия партицирования, Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… условий. Π’ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² вашСм случаС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ запросы, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Π±ΠΎΡ€ΠΊΠ° выполняСтся Π½Π΅ ΠΏΠΎ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ партицирования, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠΎ всСм партициям ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ Π±Π΅Π· партицирования.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ²ΡˆΠΈΡΡŒ с ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅ΠΌ партицирования, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ, Ρ€Π°Π·ΠΌΠ΅Ρ€ β€” это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°ΠΉΡ‚Ρ‹, ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Ρ‹ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

количСство строк Π² ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ;

ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (дСнь, нСдСля, мСсяц, Π³ΠΎΠ΄);

Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² записСй Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1 ΠΌΠ»Π½ id Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡŽ);

ΠΈΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ считаСтС ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌΠΈ для ΠΎΡ†Π΅Π½ΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ.

Иногда вмСсто Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ говорят ΠΎ шагС партицирования: ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с шагом 1 мСсяц, 10 ΠΌΠ»Π½ id, 100 ΠΌΠ»Π½ строк ΠΈ Ρ‚.ΠΏ.

Π’ простом случаС Π² Π²Ρ‹Π±ΠΎΡ€Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ самый частый запрос ΠΈ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ партицирования. НапримСр, самый частый запрос Π΄Π΅Π»Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Π·Π° послСдний мСсяц, Π° ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ партицирования β€” ΠΏΠΎΠ»Π΅ created_at. Π’ΠΎΠ³Π΄Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² 1 ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½Ρ‹ΠΉ мСсяц.

Π’ Π±ΠΎΠ»Π΅Π΅ слоТных случаях, ΠΎΡ‚Π²Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½. НапримСр, Π² случаС Ссли ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ партицирования β€” ΠΏΠΎΠ»Π΅ id, Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ: 1 ΠΌΠ»Π½ id, 10 ΠΌΠ»Π½, 100 ΠΌΠ»Π½, 1 ΠΌΠ»Ρ€Π΄? Если Π΅ΡΡ‚ΡŒ сомнСния, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ нСсколько Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². Π–Π΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ количСство Ρ‚Π°ΠΊΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² числом 5.

ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ 5-20Π“Π‘, Π½ΠΎ Π² вашСм случаС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€.

Когда Π²Ρ‹ ΠΎΡ†Π΅Π½ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊ Π½Π΅ΠΌΡƒ Π΅Ρ‰Ρ‘ Π΄Π²Π°: с бОльшим ΠΈ ΠΌΠ•Π½ΡŒΡˆΠΈΠΌ шагом. НапримСр, ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ с шагом Π² 1 мСсяц добавляСм Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ с шагом 1 нСдСля ΠΈ с шагом 2 мСсяца.

ΠŸΠΎΠ΄ΠΎΠ±ΡŒΡ‘ΠΌ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΈΡ‚ΠΎΠ³

имССтся нСкая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ пытаСмся Ρ€Π΅ΡˆΠΈΡ‚ΡŒ;

Π½Π°ΠΉΠ΄Π΅Π½ самый часто Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ запрос Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (Π»ΠΈΠ±ΠΎ Ρ‚ΠΎΠΏ запросов);

ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² партиционирования;

ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Ρ‹ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² шага партиционирования для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π².

Π˜Ρ‚ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π΅ΠΌ N Π³ΠΈΠΏΠΎΡ‚Π΅Π· (К ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² x Π¨ шагов) партиционирования Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ:

SQL-запрос Π½Π° созданиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅;

SQL-запрос (ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ для всСх Π³ΠΈΠΏΠΎΡ‚Π΅Π·) Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π° ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅;

скрипт ΠΏΠΎ пСрСносу Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎ партициям;

для случая ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ запросы Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ скрипт ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ пСрСноса Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ

Ни Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ пропускайтС ΠΈ Π½Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ этап: ΠΈΠΌΠ΅Π½Π½ΠΎ здСсь ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€Π³Π½ΡƒΡ‚ΡŒ наши Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹. ΠžΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования слСдуСт с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния поставлСнной Ρ†Π΅Π»ΠΈ. Если Ρ†Π΅Π»ΡŒ β€” ускорСниС Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… происходит Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ подходят, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΡƒΡŽΡ‚ΡΡ с Ρ†Π΅Π»ΡŒΡŽ. Если ΠΆΠ΅ Ρ†Π΅Π»ΡŒ β€” ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ удалСния Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ сам Ρ„Π°ΠΊΡ‚ партицирования Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Ρ†Π΅Π»ΡŒ. Однако, Π² этом случаС стоит ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π±Ρ‹Π»ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ тСстированиС слСдуСт Π»ΠΈΠ±ΠΎ Π½Π° Ρ‚Π°ΠΊΠΎΠΌ ΠΆΠ΅ ΠΆΠ΅Π»Π΅Π·Π΅, ΠΊΠ°ΠΊ ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-Π±Π°Π·Π΅, Π»ΠΈΠ±ΠΎ Π½Π° максимально ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΠΌ ΠΏΠΎ характСристикам. Π’ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΌ случаС, Ссли ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½ Π½Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Π±Π°Π·Ρƒ рядом. НС слСдуСт Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅: ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ тСстировании рСализация партицирования Π² ΠΏΡ€ΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ.

Как Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ? Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΈΠ· бэкапа Π»ΠΈΠ±ΠΎ всю Π±Π°Π·Ρƒ, Π»ΠΈΠ±ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ со связанными Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. ДобавляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ скрипта пСрСносим Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· мастСр-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎ партициям. ΠŸΡ€ΠΎΠ³ΠΎΠ½ΡΠ΅ΠΌ ΠΏΠ°Ρ‡ΠΊΡƒ Ρ‚ΠΎΠΏ запросов, замСряСм врСмя выполнСния (Π² этом ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° \timing), смотрим ΠΏΠ»Π°Π½ выполнСния, сравниваСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ с ΠΏΡ€ΠΎΠ΄ΠΎΠΌ.

Если тСстированиС ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, стоит ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ партицирования ΠΈ шаг партицирования. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π²Ρ‹ поставили слишком ΠΌΠ½ΠΎΠ³ΠΎ Ρ†Π΅Π»Π΅ΠΉ: ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ всё ΠΈ вся ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‰Π΅ Π±Ρ‹Π»ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ старыС Π΄Π°Π½Π½Ρ‹Π΅. Π”ΠΎΡΡ‚ΠΈΠ³Π½ΡƒΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ подобная комбинация схСмы Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния (Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ структура запросов) встрСчаСтся ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ.

Нашли расхоТдСниС, исправили, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ протСстировали, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ β€” ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ, провСряСм Ρ€Π°Π±ΠΎΡ‚Ρƒ скриптов ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΠΏΡ€ΠΎΠ΄Π΅. Π’ ΠΈΠ½ΠΎΠΌ случаС, ΠΊ соТалСнию, ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π˜Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ‡Π΅ΠΊ-лист ΠΏΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ:

Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ самый часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ запрос;

опрСдСляСм ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ партицирования;

ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ;

Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ скрипты для рассматриваСмых Π³ΠΈΠΏΠΎΡ‚Π΅Π·:

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅;

скрипт пСрСноса Π΄Π°Π½Π½Ρ‹Ρ…;

скрипты ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ;

выполняСм тСстированиС Π³ΠΈΠΏΠΎΡ‚Π΅Π·;

Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Π³ΠΈΠΏΠΎΡ‚Π΅Π·Ρƒ ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ тСстирования;

Π΄Π΅Π»Π°Π΅ΠΌ бэкап ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…;

ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π° ΠΏΡ€ΠΎΠ΄Π΅.

ΠŸΠ°Ρ€Π° слов ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π‘Π£Π‘Π”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

НаиболСС ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ constraint_exclusion β€” Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠ»Π°Π½ выполнСния запроса Π±ΡƒΠ΄Π΅Ρ‚ сформирован Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ: ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Ρ‚ΡŒ всС ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π° Π½Π°Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΠΈ (PostgreSQL Β«Π·Π°Π±ΡƒΠ΄Π΅Ρ‚Β» ΠΎ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ партицирования);

ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ max_parallel_workers_per_gather, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° максимальноС количСство Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… для сборки Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² (ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Gather ΠΈΠ»ΠΈ Gather Merge); Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΌΠΎΠΆΠ΅Ρ‚ сущСствСнно ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ запросов, Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… β€” привСсти ΠΊ Π΄Π΅Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ всСй Π‘Π£Π‘Π”.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ расскаТу Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΊΠ°ΠΊ Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ Π² Skyeng.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *