WWW.NEW.PDFM.RU
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - Собрание документов
 

«Олег Бартунов, Александр Коротков, Иван Панченко How Postgres is good as NoSQL database ? Возможности богатые, а так кто его знает. SQL/JSON 2016 ! Пора наконец померять ...»

Оптимизация high-contention write

в PostgreSQL

Олег Бартунов, Александр Коротков, Иван Панченко

How Postgres is good

as NoSQL database ?

Возможности богатые, а так

кто его знает.. .

SQL/JSON 2016 ! Пора наконец

померять производительность!

Benchmarking NoSQL Postgres

• Existing benchmarks were homemade by postgres people

• People tend to believe independent and «scientific» benchmarks

• Reproducible

• More databases

• Many workloads

• Open source YCSB Benchmark

• Yahoo! Cloud Serving Benchmark https://github.com/brianfrankcooper/YCSB/wiki

• De-facto standard benchmark for NoSQL databases

• Scientific paper «Benchmarking Cloud Serving Systems with YCSB»

https://www.cs.duke.edu/courses/fall13/cps296.4/838-CloudPapers/ycsb.pdf

• We run YCBS for Postgres master, MongoDB 3.4.2 • 1 server with 72 cores, 3 TB RAM, 2 TB SSD for clients • 1 server with 72 cores, 3 TB RAM, 2 TB SSD for database • 10Gbps switch YCSB Benchmark: Core workloads

• Workload A: Update heavy - a mix of 50/50 reads and writes

• Workload B: Read mostly - a 95/5 reads/write mix

• Workload C: Read only — 100% read

• Workload D: Read latest - new records are inserted, and the most recently inserted records are the most popular

• Workload E: Short ranges - short ranges of records are queried

• Workload F: Read-modify-write - the client will read a record, modify it, and write back the changes



• All (except D) workloads uses Zipfian distribution for record selections YCSB Benchmark: details (1) • #1: Postgres 10, synchronous commit=of Mongodb 3.4.2 (w1, j0) — 1 mln. Rows, #clients = 128 • #2: Postgres 10, synchronous commit=of Mongodb 3.4.2 (w1, j0) — 1 mln. Rows, #clients = 1000 • #3: Postgres 10, synchronous commit=on Mongodb 3.4.5 (w1, j1)

• We tested:

• Functional btree index for jsonb, jsonbc, sqljson

• Mongodb (wiredtiger with snappy compression)

• Return a whole json, just one field, small range Uniform distribution of queries: #1 Распределение Зипфа и PostgreSQL

• Разработчики в основном пользуются pgbench. PostgreSQL – pgbench optimized DBMS .

• YCSB предлагает использовать распределение Зипфа

• В pgbench не было распределения Зипфа, исправляемся https://www.postgresql.org/message-id/flat/BF3B6F54-68C3-417A-BFA B-FB4D66F2B410@postgrespro.ru Что это за распределение Зипфа

• Частота обратно пропорциональна рангу значения

• Т.е. второе по частоте значение встречается в 2 раза реже чем 1е

• Третье — в три раза реже, и т. д .

• Эмипрически выведено из анализа частотности слов

• Хорошо аппроксимирует другие жизненные ситуации Zipfian distributions of queries #1 Uniform distribution of queries: #2 Zipfian distributions of queries: #2 Zipfian distributions of queries: #3 Выводы

• Сочетание «synchronous_commit = of», zipfian distribution и большой конкурентности ( 100) не очень хорошо для постгреса (обновление)

• Даже для однородного распределения при большом количестве клиентов ( 500) производительность обновления постгреса деградирует

• Персистентность «synchronous_commit = on» немного помогает постгресу конкурировать с Mongodb (j1), но не кардинально Ого, а постгрес ничего !

Для «вебовской» нагрузки постгрессливает при большой конкуретности

Надо разбираться !

ACID Isolation – на выполнение данной транзакции не должны оказывать влияние другие транзакции, которые работают параллельно с ней .

Для того, чтобы выполнить свойство isolation, но при этом читающие и пишущие транзакции не блокировали друг друга, был придуман MVCC. При MVCC старые версии строк сохраняются для того, чтобы читающие транзакции могли видеть их .

Snapshot – это состояние базы данных между двумя транзакциями .

Для того, чтобы идентифицировать снапшот, нужно уметь отличать, какие транзакции в прошлом, а каким – в будущем. В PostgreSQL снапшот задаётся с помощью xmin, xmax и массива xip .

Что такое snapshot Использование snapshot'ов Read committed vs snapshots

1) XID 10 читает туплы (1; B) и (2; C) .

2) XID 11 обновляет тупл (4; E) на (4; A) и коммитится .

3) XID 10 читает тупл (3; D), а (4; E) ему уже не видим, т. к. он уже был обновлён .

–  –  –

1)Дожидаемся, пока транзакция, записанная в xmax, закончится .

2)Ищем последний tuple в цепочке update'ов .

3)Пытаемся записаться свой xid в tuple xmax. Если кто-то уже сделал это до нас, то переходим к шагу 1 .

При большом contention'е всё было совсем плохо .

Поправили в 0e5680f4 .

Как мы лочим tuple в PostgreSQL 9.5+

1)Берем Lock на tuple id .

2)Дожидаемся, пока транзакция, записанная в xmax, закончится .

3)Ищем последний tuple в цепочке update'ов .

4)Записываем свой xid в tuple xmax .

–  –  –

Heap Row v1 Row v2 Row v3 Оптимизации для high-contention write

• Primary key lock during update

• Низкоуровневые оптимизации Small improvement to compactify_tuples https://www.postgresql.org/message-id/flat/3c6f1d3a2f429ee80d003 1e6c69cb7 Fix performance degradation of contended LWLock on NUMA https://www.postgresql.org/message-id/flat/2968c0be065baab8865c4c 95de3f435c@postgrespro.ru Что-то сложно все.. .

Это упрощенная картина :)

–  –  –

При большом числе коннектов производительность всё равно падает Проблема остаётся, нужны дополнительные оптимизации Что делать с high-contention write?

–  –  –

По trigger'у устанавливаем post_comment.insert_xid = txid_current() .

По cron'у обновляем счётчик комментариев .

UPDATE post SET comments_count = views_count + ( SELECT count(*) FROM post_comment pc WHERE pc.post_id = post.id AND NOT txid_visible_in_snapshot(pc.insert_xid, post.last_snapshot) ), last_snapshot = txid_current_snapshot();

Выводы

• PostgreSQL показывает хорошие результаты на YCSB benchmark, напрямую конкурируя с NoSQL решениями .

• Если одновременно synchronous_commit = of и используется распределение Зипфа, то возникает проблема с high-contention write .

• Для high-contention write есть ряд патчей, улучшающих ситуацию .

• Можно успешно бороться с high-contention write на уровне приложения, хотя это и костыли .

• Мы всё понимаем, и будем и дальше трудиться над улучшением ситуации .

СПАСИБО !

Похожие работы:

«1. Оглавление 2. Расположение основных узлов и агрегатов 3. Перед поездкой 4. Безопасность 5. Езда 6. Оригинальные запчасти 7. Назначение каждого компонента A Приборная панель Замок зажигания.U Назначение органов управления Блокировка двигателя Багажник Подножки пассажира op Крышка топливного бака Тормоза Парковочн...»

«Наталия Правдина Я очаровательна всегда Я очаровательна всегда: АСТ; Москва; 2007 ISBN 978-527-115992-3, 978-591-207039-6 Аннотация "Студия благополучия и успеха Наталии Правдиной" – новая серия книг, издающихся специально по просьбам многочисленной армии последователей и почитателей таланта Наталии Правдиной – создательни...»

«Отчет ассистента кафедры генетики и селекции Пугачевой Ольги Марковны за 2007-2008 учебный год. Нейроспецифические функции гена sbr (nxf1) у Drosophila melanogaster . Введение. Цель настоящего исследования состоит в изуч...»

«Археологическая лътогтоеь. Заеданія общбствъ. Общество Нестора Жтошеца при университеты ев. Владиміра. 27 октября состоялось годичное собраніе общества, пріурочиваемое, согласно гъ уегавомъ общества, ко дяю памяти отфь русск...»

«Образцы логопазлов на С,СЬ,З,ЗЬ,Ц Аист. Речевой материал: аист, василёк, волосы, веснушки, гуси, гусеница, доски, косынка, капуста, кусты, лепесток, лес, листок, лисёнок, нос, пасть, подсолнух, полоски, поросёнок, ресницы, страус, собака,...»

«Людмила Мельникова Белорусский государственный университет сОвременнОе белОрусскОе телевидение: От какОгО наследства мы Отказываемся? Определение перспектив национального телевидения, расширение его присутствия в межгосударственном европейском и евраз...»

«"ГАЗПРОМ НЕФТЬ": ОТВЕТСТВЕННОЕ РАЗВИТИЕ ОТЧЕТ ОБ УСТОЙЧИВОМ РАЗВИТИИ ЗА 2007 ГОД Благодарность от Председателя Правления ОАО "Газпром нефть" Выражаю благодарность всем специалистам и руководителям из самых разн...»






 
2018 www.new.pdfm.ru - «Бесплатная электронная библиотека - собрание документов»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.