Строчно-ориентированное хранилище и секции

Оптимизация запросов в PostgreSQL

Amy McCarty

Instructor

Типы хранилищ баз данных

Строчно-ориентированное хранилище

  • Сохраняется связь между столбцами

Столбчато-ориентированное хранилище

  • Сохраняется связь между строками
id name species age habitat received
01 Bob panda 2 Asia 2018
02 Sunny zebra 3 Africa 2018
03 Beco zebra 10 Africa 2017
04 Coco koala 5 Australia 2016
Оптимизация запросов в PostgreSQL

Строчно-ориентированное

Строчно-ориентированное хранилище

  • Сохраняется связь между столбцами

 

id name species age habitat received
01 Bob panda 2 Asia 2018
Оптимизация запросов в PostgreSQL

Столбчато-ориентированное

Столбчато-ориентированное хранилище

  • Сохраняется связь между строками  

Две таблицы. Первая — список идентификаторов и имён: 01 — Bob, 02 — Sunny, 03 — Beco, 04 — Coco. Вторая — те же идентификаторы со списком видов: 01 — панда, 02 — зебра, 03 — зебра, 04 — коала.

Оптимизация запросов в PostgreSQL

Строчно-ориентированное хранилище

 

  • Одна строка хранится в одном месте
  • Быстрое добавление и удаление целых записей
  • Быстрый возврат всех столбцов
    • Медленный возврат всех строк
Оптимизация запросов в PostgreSQL

Сокращение числа строк

Уменьшение числа строк

  • WHERE filter
  • INNER JOIN
  • DISTINCT
  • LIMIT
Оптимизация запросов в PostgreSQL

Методы строчно-ориентированных баз данных

Секции

  • Способ разбить одну (родительскую) таблицу на несколько меньших (дочерних)

Индексы

  • Способ создать отсортированные ключи по столбцам для ускорения поиска

 

Применение секций и индексов

  • Требуют настройки и обслуживания
  • Информация об их наличии — у администратора БД или в документации
Оптимизация запросов в PostgreSQL

Структура секций

Родительская таблица зоопарка с четырьмя записями, содержащими id, имя, вид, среду обитания и год получения. 01 — Bob — Панда — возраст — среда обитания — год. 02 — Sunny — Зебра — 3 — Африка — 2018. 03 — Beco — Зебра — 10 — Африка — 2017. 04 — Coco — Ара — 5 — Южная Америка — 2016. Показаны 3 дочерние таблицы по столбцу среды обитания: таблица Азии — одна запись для Bob; таблица Африки — две записи для Sunny и Beco; таблица Южной Америки — одна запись для Coco.

  • Родительская таблица
    • Видна во фронтенде базы данных
    • Используется для написания запросов
  • Дочерние таблицы
    • Не видны во фронтенде базы данных
    • По ним выполняется поиск запросов
Оптимизация запросов в PostgreSQL

Структура секций

Родительская таблица зоопарка с четырьмя записями, содержащими id, имя, вид, среду обитания и год получения. 01 — Bob — Панда — возраст — среда обитания — год. 02 — Sunny — Зебра — 3 — Африка — 2018. 03 — Beco — Зебра — 10 — Африка — 2017. 04 — Coco — Ара — 5 — Южная Америка — 2016. Показаны 3 дочерние таблицы по столбцу среды обитания. Таблица Африки выделена красным.

SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'
Оптимизация запросов в PostgreSQL

Обзор секций

Что такое

  • Разбиение одной таблицы на несколько меньших

Зачем

  • Гибкость хранения
  • Более быстрые запросы

Где применять

  • Часто используемые столбцы фильтрации
    • Дата, местоположение
Оптимизация запросов в PostgreSQL

Оценка запросов с секциями

Планировщик запросов

Несколько поваров вокруг большого котла

EXPLAIN
SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'

План запроса

Seq Scan on zoo_animals  (cost=0.00..
17.70 rows=2 width=182)
  Filter: (state_code = 15)
  • Оценки стоимости (времени выполнения)
Оптимизация запросов в PostgreSQL

Давайте потренируемся!

Оптимизация запросов в PostgreSQL

Preparing Video For Download...