PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да съхранявате ефективно милиони статистически записи?

Този брой не е толкова голям, колкото си мислите. В текущата работа съхраняваме данни за показатели за уебсайтове и общият брой редове, които имаме, е много по-голям. А в предишната си работа работих с pg база данни, която събираше показатели от мобилната мрежа и събираше ~2 милиарда записа на ден. Така че не се страхувайте от броя на милиардите записи.

Определено ще трябва да разделите данните - най-вероятно по дни. С това количество данни можете да намерите индекси за доста безполезни. Зависи от самолетите, които ще видите в EXPLAIN команден изход. Например това приложение на телекомуникационната компания изобщо не използва никакви индекси, защото те просто биха забавили целия двигател.

Друг е въпросът колко бързи отговори на запитвания ще ви трябват. И кои стъпки на детайлност (суми за часове/дни/седмици и т.н.) за заявки ще разрешите за потребителите. Може дори да се наложи да направите някои обобщения за подробности като седмица, месец или тримесечие.

Допълнение:

Тези ~2 милиарда записи на ден в това приложение на телекомуникационните компании отнемаха ~290GB на ден. И това означаваше вмъквания на ~23000 записа в секунда с помощта на групови вмъквания с командата COPY. Всеки обем беше няколко хиляди записа. Суровите данни бяха разделени по минути. За да избегне изчакване на диска, db имаше 4 таблични пространства на 4 различни диска/масиви и дяловете бяха разпределени върху тях. PostreSQL успя да се справи с всичко без никакви проблеми. Така че трябва да помислите и за правилната HW конфигурация.

Добра идея също е да преместите директорията pg_xlog на отделен диск или масив. Няма просто различна файлова система. Всичко трябва да е отделно HW. Мога да препоръчам SSD само в масиви с правилна проверка за грешки. Напоследък имахме проблеми с повредена база данни на един SSD.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hibernate 4 и Postgres:Как да създадете последователност на таблица?

  2. EXECUTE...INTO...USING изразът в PL/pgSQL не може да се изпълни в запис?

  3. Как да направя препратка към таблица с външни ключове два пъти?

  4. Yii2:как да зададете множество схеми на база данни?

  5. Postgresql пълнотекстово търсене на подобни думи