SlideShare a Scribd company logo
1 of 35
Download to read offline
×òî íîâîãî â PostgreSQL 9.4 c òî÷êè çðåíèÿ ïðîèçâîäèòåëüíîñòè 
Èëüÿ Êîñìîäåìüÿíñêèé 
ik@postgresql-consulting.com
Ïëàí 
Óëó÷øåíèÿ ïðîèçâîäèòåëüíîñòè 
 Materialized views 
 Huge pages 
 WAL 
 Íåáîëüøèå íî ïðèÿòíûå ìåëî÷è 
 Ìîíèòîðèíã ïðîèçâîäèòåëüíîñòè 
 Çàäåë íà áóäóùåå
Materialized views 
 View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî
Materialized views 
 View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî 
 Î÷åíü öåííî äëÿ OLAP è äåíîðìàëèçàöèè
Materialized views 
 View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî 
 Î÷åíü öåííî äëÿ OLAP è äåíîðìàëèçàöèè 
 Çàäà÷à îáíîâëåíèÿ äàííûõ â Mat. View - ñëîæíàÿ
Materialized views 
 View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî 
 Î÷åíü öåííî äëÿ OLAP è äåíîðìàëèçàöèè 
 Çàäà÷à îáíîâëåíèÿ äàííûõ â Mat. View - ñëîæíàÿ 
 Äî 9.3 â PostgreSQL íå áûëî âñòðîåííîé ðåàëèçàöèè
Materialized views 
 View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî 
 Î÷åíü öåííî äëÿ OLAP è äåíîðìàëèçàöèè 
 Çàäà÷à îáíîâëåíèÿ äàííûõ â Mat. View - ñëîæíàÿ 
 Äî 9.3 â PostgreSQL íå áûëî âñòðîåííîé ðåàëèçàöèè 
 Most desired feature â TODO
Materialized views 
 View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî 
 Î÷åíü öåííî äëÿ OLAP è äåíîðìàëèçàöèè 
 Çàäà÷à îáíîâëåíèÿ äàííûõ â Mat. View - ñëîæíàÿ 
 Äî 9.3 â PostgreSQL íå áûëî âñòðîåííîé ðåàëèçàöèè 
 Most desired feature â TODO 
 Materialized views â 9.3 ýòî PoC
Materialized views â 9.4 
 REFRESH MATERIALIZED VIEW CONCURRENTLY
Materialized views â 9.4 
 REFRESH MATERIALIZED VIEW CONCURRENTLY 
 Íå òðåáóåòñÿ ýêñêëþçèâíàÿ áëîêèðîâêà
Materialized views â 9.4 
 REFRESH MATERIALIZED VIEW CONCURRENTLY 
 Íå òðåáóåòñÿ ýêñêëþçèâíàÿ áëîêèðîâêà 
 Òî åñòü óæå ìîæíî ïîëüçîâàòüñÿ
Materialized views â 9.4 
 REFRESH MATERIALIZED VIEW CONCURRENTLY 
 Íå òðåáóåòñÿ ýêñêëþçèâíàÿ áëîêèðîâêà 
 Òî åñòü óæå ìîæíî ïîëüçîâàòüñÿ 
 Â ñèëó îñîáåííîñòåé ðåàëèçàöèè òðåáóåòñÿ Primary Key/ Unique Index
Huge pages - ÷òî òàêîå è çà÷åì 
 Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ 
äåíåã
Huge pages - ÷òî òàêîå è çà÷åì 
 Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ 
äåíåã 
 Äåðæàòü áàçó â ïàìÿòè õîðîøî (ëþáóþ õîðîøî, PostgreSQL ñîâñåì õîðîøî)
Huge pages - ÷òî òàêîå è çà÷åì 
 Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ 
äåíåã 
 Äåðæàòü áàçó â ïàìÿòè õîðîøî (ëþáóþ õîðîøî, PostgreSQL ñîâñåì õîðîøî) 
 Ïî óìîë÷àíèþ ïàìÿòü âûäåëÿåòñÿ ïî 4kB - òàê áûñòðåå
Huge pages - ÷òî òàêîå è çà÷åì 
 Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ 
äåíåã 
 Äåðæàòü áàçó â ïàìÿòè õîðîøî (ëþáóþ õîðîøî, PostgreSQL ñîâñåì õîðîøî) 
 Ïî óìîë÷àíèþ ïàìÿòü âûäåëÿåòñÿ ïî 4kB - òàê áûñòðåå 
 ÎÑ òðàíñëèðóåò âèðòóàëüíûå àäðåñà â ôèçè÷åñêèå, ðåçóëüòàò êýøèðóåòñÿ â 
Translation Lookaside Buffer (TLB)
Huge pages - ÷òî òàêîå è çà÷åì 
 Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ 
äåíåã 
 Äåðæàòü áàçó â ïàìÿòè õîðîøî (ëþáóþ õîðîøî, PostgreSQL ñîâñåì õîðîøî) 
 Ïî óìîë÷àíèþ ïàìÿòü âûäåëÿåòñÿ ïî 4kB - òàê áûñòðåå 
 ÎÑ òðàíñëèðóåò âèðòóàëüíûå àäðåñà â ôèçè÷åñêèå, ðåçóëüòàò êýøèðóåòñÿ â 
Translation Lookaside Buffer (TLB) 
 1Gb 
4kB = 262144 è 64-áèòíàÿ àäðåñàöèÿ - íà áîëüøèõ îáúåìàõ ïàìÿòè îâåðõýä è 
íèçêàÿ ýôôåêòèâíîñòü TLB
Huge pages - ÷òî òàêîå è çà÷åì 
 Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ 
äåíåã 
 Äåðæàòü áàçó â ïàìÿòè õîðîøî (ëþáóþ õîðîøî, PostgreSQL ñîâñåì õîðîøî) 
 Ïî óìîë÷àíèþ ïàìÿòü âûäåëÿåòñÿ ïî 4kB - òàê áûñòðåå 
 ÎÑ òðàíñëèðóåò âèðòóàëüíûå àäðåñà â ôèçè÷åñêèå, ðåçóëüòàò êýøèðóåòñÿ â 
Translation Lookaside Buffer (TLB) 
 1Gb 
4kB = 262144 è 64-áèòíàÿ àäðåñàöèÿ - íà áîëüøèõ îáúåìàõ ïàìÿòè îâåðõýä è 
íèçêàÿ ýôôåêòèâíîñòü TLB 
 Âûäåëÿåì ïàìÿòü áîëüøèìè (íàïðèìåð 2Mb) ïîðöèÿìè
Huge pages è PostgreSQL 
 vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü)
Huge pages è PostgreSQL 
 vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü) 
 Äî 9.2 âêëþ÷èòåëüíî - ÷åðåç áèáëèîòåêó hugetlb
Huge pages è PostgreSQL 
 vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü) 
 Äî 9.2 âêëþ÷èòåëüíî - ÷åðåç áèáëèîòåêó hugetlb 
 9.3 óëó÷øåíà ðàáîòà ñ shared memory c ïîìîùüþ mmap - huge pages íå 
ðàáîòàþò
Huge pages è PostgreSQL 
 vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü) 
 Äî 9.2 âêëþ÷èòåëüíî - ÷åðåç áèáëèîòåêó hugetlb 
 9.3 óëó÷øåíà ðàáîòà ñ shared memory c ïîìîùüþ mmap - huge pages íå 
ðàáîòàþò 
 huge_pages = try jonjo (postgresql.conf)
Huge pages è PostgreSQL 
 vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü) 
 Äî 9.2 âêëþ÷èòåëüíî - ÷åðåç áèáëèîòåêó hugetlb 
 9.3 óëó÷øåíà ðàáîòà ñ shared memory c ïîìîùüþ mmap - huge pages íå 
ðàáîòàþò 
 huge_pages = try jonjo (postgresql.conf) 
 try - äåôîëò, íå ïîëó÷èëîñü, íå èñïîëüçóåì
Huge pages è PostgreSQL 
 vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü) 
 Äî 9.2 âêëþ÷èòåëüíî - ÷åðåç áèáëèîòåêó hugetlb 
 9.3 óëó÷øåíà ðàáîòà ñ shared memory c ïîìîùüþ mmap - huge pages íå 
ðàáîòàþò 
 huge_pages = try jonjo (postgresql.conf) 
 try - äåôîëò, íå ïîëó÷èëîñü, íå èñïîëüçóåì 
 Ñåé÷àñ ðàáîòàò òîëüêî íà linux, try íà FreeBSD - OK
Îïòèìèçàöèÿ çàïèñè â WAL 
 Áîëåå îäíîãî áýêåíäà ìîæåò ïèñàòü â áóôåðû WAL
Îïòèìèçàöèÿ çàïèñè â WAL 
 Áîëåå îäíîãî áýêåíäà ìîæåò ïèñàòü â áóôåðû WAL 
 Ïðè àïäåéòå â WAL ìîæåò çàïèñûâàòüñÿ òîëüêî èçìåíåííîå ïîëå, à íå âñÿ 
ñòðîêà (åñëè tuple ïèøåòñÿ â òó æå ñòðàíèöó)
Íåáîëüøèå íî ïðèÿòíûå ìåëî÷è 
 Ïðîèçâîäèòåëüíîñòü WINDOW ôóíêöèé
Íåáîëüøèå íî ïðèÿòíûå ìåëî÷è 
 Ïðîèçâîäèòåëüíîñòü WINDOW ôóíêöèé 
 Ïðîèçâîäèòåëüíîñòü COPY
Íåáîëüøèå íî ïðèÿòíûå ìåëî÷è 
 Ïðîèçâîäèòåëüíîñòü WINDOW ôóíêöèé 
 Ïðîèçâîäèòåëüíîñòü COPY 
 Çàòðàòû ïàìÿòè íà àíîíèìíûå áëîêè (DO)
Íåáîëüøèå íî ïðèÿòíûå ìåëî÷è 
 Ïðîèçâîäèòåëüíîñòü WINDOW ôóíêöèé 
 Ïðîèçâîäèòåëüíîñòü COPY 
 Çàòðàòû ïàìÿòè íà àíîíèìíûå áëîêè (DO) 
 Óëó÷øåíèÿ îïòèìèçàòîðà
Ìîíèòîðèíã 
 pg_stat_all_tables:n_mod_since_analyze
Ìîíèòîðèíã 
 pg_stat_all_tables:n_mod_since_analyze 
 pg_stat_archiver
Ìîíèòîðèíã 
 pg_stat_all_tables:n_mod_since_analyze 
 pg_stat_archiver 
 backend_xmin
Ìîíèòîðèíã 
 pg_stat_all_tables:n_mod_since_analyze 
 pg_stat_archiver 
 backend_xmin 
 Óëó÷øåí EXPLAIN
Çàäåë íà áóäóùåå - ïàðàëëåëèçì è ëîãè÷åñêàÿ ðåïëèêàöèÿ 
 ïîëüçîâòåëüñêèé Ñ-êîä ìîæåò èñïîëíÿòüñÿ êàê îòäåëüíèûé ïðîöåññ 
(background workers) 
 Ïàðàëëåëüíàÿ çàïèñü â áóôåðû WAL 
 Logical Decoding

More Related Content

More from Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

More from Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Некоторые улучшения производительности: Huge Pages – Илья Космодемьянский

  • 1. ×òî íîâîãî â PostgreSQL 9.4 c òî÷êè çðåíèÿ ïðîèçâîäèòåëüíîñòè Èëüÿ Êîñìîäåìüÿíñêèé ik@postgresql-consulting.com
  • 2. Ïëàí Óëó÷øåíèÿ ïðîèçâîäèòåëüíîñòè Materialized views Huge pages WAL Íåáîëüøèå íî ïðèÿòíûå ìåëî÷è Ìîíèòîðèíã ïðîèçâîäèòåëüíîñòè Çàäåë íà áóäóùåå
  • 3. Materialized views View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî
  • 4. Materialized views View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî Î÷åíü öåííî äëÿ OLAP è äåíîðìàëèçàöèè
  • 5. Materialized views View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî Î÷åíü öåííî äëÿ OLAP è äåíîðìàëèçàöèè Çàäà÷à îáíîâëåíèÿ äàííûõ â Mat. View - ñëîæíàÿ
  • 6. Materialized views View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî Î÷åíü öåííî äëÿ OLAP è äåíîðìàëèçàöèè Çàäà÷à îáíîâëåíèÿ äàííûõ â Mat. View - ñëîæíàÿ Äî 9.3 â PostgreSQL íå áûëî âñòðîåííîé ðåàëèçàöèè
  • 7. Materialized views View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî Î÷åíü öåííî äëÿ OLAP è äåíîðìàëèçàöèè Çàäà÷à îáíîâëåíèÿ äàííûõ â Mat. View - ñëîæíàÿ Äî 9.3 â PostgreSQL íå áûëî âñòðîåííîé ðåàëèçàöèè Most desired feature â TODO
  • 8. Materialized views View, êîòîðàÿ íå îáíîâëÿåòñÿ ïðè îáðàùåíèè, à õðàíèò äàííûå ëîêàëüíî Î÷åíü öåííî äëÿ OLAP è äåíîðìàëèçàöèè Çàäà÷à îáíîâëåíèÿ äàííûõ â Mat. View - ñëîæíàÿ Äî 9.3 â PostgreSQL íå áûëî âñòðîåííîé ðåàëèçàöèè Most desired feature â TODO Materialized views â 9.3 ýòî PoC
  • 9. Materialized views â 9.4 REFRESH MATERIALIZED VIEW CONCURRENTLY
  • 10. Materialized views â 9.4 REFRESH MATERIALIZED VIEW CONCURRENTLY Íå òðåáóåòñÿ ýêñêëþçèâíàÿ áëîêèðîâêà
  • 11. Materialized views â 9.4 REFRESH MATERIALIZED VIEW CONCURRENTLY Íå òðåáóåòñÿ ýêñêëþçèâíàÿ áëîêèðîâêà Òî åñòü óæå ìîæíî ïîëüçîâàòüñÿ
  • 12. Materialized views â 9.4 REFRESH MATERIALIZED VIEW CONCURRENTLY Íå òðåáóåòñÿ ýêñêëþçèâíàÿ áëîêèðîâêà Òî åñòü óæå ìîæíî ïîëüçîâàòüñÿ Â ñèëó îñîáåííîñòåé ðåàëèçàöèè òðåáóåòñÿ Primary Key/ Unique Index
  • 13. Huge pages - ÷òî òàêîå è çà÷åì Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ äåíåã
  • 14. Huge pages - ÷òî òàêîå è çà÷åì Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ äåíåã Äåðæàòü áàçó â ïàìÿòè õîðîøî (ëþáóþ õîðîøî, PostgreSQL ñîâñåì õîðîøî)
  • 15. Huge pages - ÷òî òàêîå è çà÷åì Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ äåíåã Äåðæàòü áàçó â ïàìÿòè õîðîøî (ëþáóþ õîðîøî, PostgreSQL ñîâñåì õîðîøî) Ïî óìîë÷àíèþ ïàìÿòü âûäåëÿåòñÿ ïî 4kB - òàê áûñòðåå
  • 16. Huge pages - ÷òî òàêîå è çà÷åì Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ äåíåã Äåðæàòü áàçó â ïàìÿòè õîðîøî (ëþáóþ õîðîøî, PostgreSQL ñîâñåì õîðîøî) Ïî óìîë÷àíèþ ïàìÿòü âûäåëÿåòñÿ ïî 4kB - òàê áûñòðåå ÎÑ òðàíñëèðóåò âèðòóàëüíûå àäðåñà â ôèçè÷åñêèå, ðåçóëüòàò êýøèðóåòñÿ â Translation Lookaside Buffer (TLB)
  • 17. Huge pages - ÷òî òàêîå è çà÷åì Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ äåíåã Äåðæàòü áàçó â ïàìÿòè õîðîøî (ëþáóþ õîðîøî, PostgreSQL ñîâñåì õîðîøî) Ïî óìîë÷àíèþ ïàìÿòü âûäåëÿåòñÿ ïî 4kB - òàê áûñòðåå ÎÑ òðàíñëèðóåò âèðòóàëüíûå àäðåñà â ôèçè÷åñêèå, ðåçóëüòàò êýøèðóåòñÿ â Translation Lookaside Buffer (TLB) 1Gb 4kB = 262144 è 64-áèòíàÿ àäðåñàöèÿ - íà áîëüøèõ îáúåìàõ ïàìÿòè îâåðõýä è íèçêàÿ ýôôåêòèâíîñòü TLB
  • 18. Huge pages - ÷òî òàêîå è çà÷åì Ñåðâåðà ñ áîëüøèì êîëè÷åñòâîì ïàìÿòè (128-256Gb) òåïåðü ñòîÿò ðàçóìíûõ äåíåã Äåðæàòü áàçó â ïàìÿòè õîðîøî (ëþáóþ õîðîøî, PostgreSQL ñîâñåì õîðîøî) Ïî óìîë÷àíèþ ïàìÿòü âûäåëÿåòñÿ ïî 4kB - òàê áûñòðåå ÎÑ òðàíñëèðóåò âèðòóàëüíûå àäðåñà â ôèçè÷åñêèå, ðåçóëüòàò êýøèðóåòñÿ â Translation Lookaside Buffer (TLB) 1Gb 4kB = 262144 è 64-áèòíàÿ àäðåñàöèÿ - íà áîëüøèõ îáúåìàõ ïàìÿòè îâåðõýä è íèçêàÿ ýôôåêòèâíîñòü TLB Âûäåëÿåì ïàìÿòü áîëüøèìè (íàïðèìåð 2Mb) ïîðöèÿìè
  • 19. Huge pages è PostgreSQL vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü)
  • 20. Huge pages è PostgreSQL vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü) Äî 9.2 âêëþ÷èòåëüíî - ÷åðåç áèáëèîòåêó hugetlb
  • 21. Huge pages è PostgreSQL vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü) Äî 9.2 âêëþ÷èòåëüíî - ÷åðåç áèáëèîòåêó hugetlb 9.3 óëó÷øåíà ðàáîòà ñ shared memory c ïîìîùüþ mmap - huge pages íå ðàáîòàþò
  • 22. Huge pages è PostgreSQL vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü) Äî 9.2 âêëþ÷èòåëüíî - ÷åðåç áèáëèîòåêó hugetlb 9.3 óëó÷øåíà ðàáîòà ñ shared memory c ïîìîùüþ mmap - huge pages íå ðàáîòàþò huge_pages = try jonjo (postgresql.conf)
  • 23. Huge pages è PostgreSQL vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü) Äî 9.2 âêëþ÷èòåëüíî - ÷åðåç áèáëèîòåêó hugetlb 9.3 óëó÷øåíà ðàáîòà ñ shared memory c ïîìîùüþ mmap - huge pages íå ðàáîòàþò huge_pages = try jonjo (postgresql.conf) try - äåôîëò, íå ïîëó÷èëîñü, íå èñïîëüçóåì
  • 24. Huge pages è PostgreSQL vm:nr_hugepages = 3170 (sysctl, ÿäðî äîëæíî ïîääåðæèâàòü) Äî 9.2 âêëþ÷èòåëüíî - ÷åðåç áèáëèîòåêó hugetlb 9.3 óëó÷øåíà ðàáîòà ñ shared memory c ïîìîùüþ mmap - huge pages íå ðàáîòàþò huge_pages = try jonjo (postgresql.conf) try - äåôîëò, íå ïîëó÷èëîñü, íå èñïîëüçóåì Ñåé÷àñ ðàáîòàò òîëüêî íà linux, try íà FreeBSD - OK
  • 25. Îïòèìèçàöèÿ çàïèñè â WAL Áîëåå îäíîãî áýêåíäà ìîæåò ïèñàòü â áóôåðû WAL
  • 26. Îïòèìèçàöèÿ çàïèñè â WAL Áîëåå îäíîãî áýêåíäà ìîæåò ïèñàòü â áóôåðû WAL Ïðè àïäåéòå â WAL ìîæåò çàïèñûâàòüñÿ òîëüêî èçìåíåííîå ïîëå, à íå âñÿ ñòðîêà (åñëè tuple ïèøåòñÿ â òó æå ñòðàíèöó)
  • 27. Íåáîëüøèå íî ïðèÿòíûå ìåëî÷è Ïðîèçâîäèòåëüíîñòü WINDOW ôóíêöèé
  • 28. Íåáîëüøèå íî ïðèÿòíûå ìåëî÷è Ïðîèçâîäèòåëüíîñòü WINDOW ôóíêöèé Ïðîèçâîäèòåëüíîñòü COPY
  • 29. Íåáîëüøèå íî ïðèÿòíûå ìåëî÷è Ïðîèçâîäèòåëüíîñòü WINDOW ôóíêöèé Ïðîèçâîäèòåëüíîñòü COPY Çàòðàòû ïàìÿòè íà àíîíèìíûå áëîêè (DO)
  • 30. Íåáîëüøèå íî ïðèÿòíûå ìåëî÷è Ïðîèçâîäèòåëüíîñòü WINDOW ôóíêöèé Ïðîèçâîäèòåëüíîñòü COPY Çàòðàòû ïàìÿòè íà àíîíèìíûå áëîêè (DO) Óëó÷øåíèÿ îïòèìèçàòîðà
  • 34. Ìîíèòîðèíã pg_stat_all_tables:n_mod_since_analyze pg_stat_archiver backend_xmin Óëó÷øåí EXPLAIN
  • 35. Çàäåë íà áóäóùåå - ïàðàëëåëèçì è ëîãè÷åñêàÿ ðåïëèêàöèÿ ïîëüçîâòåëüñêèé Ñ-êîä ìîæåò èñïîëíÿòüñÿ êàê îòäåëüíèûé ïðîöåññ (background workers) Ïàðàëëåëüíàÿ çàïèñü â áóôåðû WAL Logical Decoding