LINUX.ORG.RU

скорость доступа к mysql и postgres

 ,


0

5

привет, ЛОР. есть один код.

так как решили в скором времени переносить наш проект с mysql на postgres, решил проверить скорость этих СУБД на одной функции (тоже самое на php)

все данные в таблицах одинаковые (кому интересно)

выполнение функции с mysql занимает 0,030 с на lua и 0,080 с на php
выполнение функции с postgres занимает 0,080 с на lua и 0,12 с на php

отчего может быть такая разница?
обе СУБД с дефолтными настройками на Debian Wheezy

★★★★★

Последнее исправление: snoopcat (всего исправлений: 3)

отчего может быть такая разница?

this ->

СУБД с дефолтными настройками

postgres на дефолтных настройках неюзабелен.

shared_buffers = 24MB - вот это для начала раз в 100 увеличь (ну или поставь = 1/4 памяти). И прогони тесты еще раз.

А дальше уже читай https://wiki.postgresql.org/wiki/Performance_Optimization

pi11 ★★★★★
()
Последнее исправление: pi11 (всего исправлений: 2)
Ответ на: комментарий от snoopcat

потому что у постгре по дефолту кеш больше

anonymous
()

Учитывая что из lua mysql быстрее чем postgresql, а из php наоборот могу предположить что дело в реализациях работы с этими БД в разных языках.
Либо различается поведение тестовых скриптов, при-чём различается так что выявляет какие-то различия в работе мускуля и постгреса.

MrClon ★★★★★
()
Ответ на: комментарий от pi11

Тьфу-ты, пост читал ещё с просонья и почему-то решил что 0.12 это 0.012

MrClon ★★★★★
()

Если скорость нужна, то тут похоже можно всё это делать в один запрос, без всяких циклов. Или хотя бы prepared statements использовать в циклах

disarmer ★★★
()

отчего может быть такая разница?

strace -c

anonymous
()

Нормально. В данной задаче mysql будет однозначно быстрее postgres, разница и больше может быть, особенно с учетом кэширования результатов запросов в mysql. Постгрес начнет выруливать и заруливать мускул на сложных селектах, с подзапросами, на ХП и особенно под большой нагрузкой. Ну и фич больше. Так что перевод проекта с mysql на postgres правильно в целом правильно ящитаю. Если только там не select * from table раз в полчаса.

И да, postgres надо настраивать на перформанс, у меня с нуля на чтение мануалов и настройку ушло часа 2, зато потом ух... кстати, индексы по полям есть?

anonymous
()

так как решили в скором времени переносить наш проект с mysql на postgres, решил проверить скорость этих СУБД на одной функции (тоже самое на php)

А что это делают эти «функции»? В чем заключается их работа? А то что-то я не особо понимаю.

anonymous
()
Ответ на: комментарий от anonymous

Два чая этому анониму, мускуль просто быстрее бегает на простых запросах, при 90% из кеша мне удавалось выжать 20 тыс запросов в секунду.

goingUp ★★★★★
()
Ответ на: комментарий от anonymous

есть таблица вида

id | code | direction

1 | 79 | Россия Прочее
2 | 796 | Россия Билайн

надо превратить «79601234567» в «2», функцию писал не я

Если только там не select * from table раз в полчаса.

пример запроса:

query = sql_query(«select users.*, accounts.balance, accounts.off_threshold, currencies.usd_course, round(currencies.usd_course::numeric*accounts.balance::numeric,3) as displaybalance, round(currencies.usd_course::numeric*accounts.off_threshold::numeric,3) as displayoffthreshold, currencies.displayname as displaycurrency, tariffications.name as tariffname from users inner join accounts on (users.account = accounts.account) inner join currencies on (currencies.currency = coalesce( (select currency from currencies where currency = '»..curr..«'), 'USD')) inner join tariffications on (tariffications.id = coalesce( (select id from tariffications where id=users.tariffications), 1)) where users.»..get_by.." = '"..username..«'»)

snoopcat ★★★★★
() автор топика
Последнее исправление: snoopcat (всего исправлений: 2)
Ответ на: комментарий от anonymous

а еще мне вот интересно, много ли я получу профита после перевода nginx+php-fcgi+mysql (голый) на nginx+ngx_lua+postgres

сначала (когда юзеров было около 50) всё было хорошо, а теперь в часы пик CPU Load прыгает от 10 до 99% (спасибо mysqld+php5-cgi) и обычный select может выполняться 10 секунд, пока нагрузка не спадёт

snoopcat ★★★★★
() автор топика
Ответ на: комментарий от snoopcat

php-cgi in external FASTCGI mode
php-cgi
external
FASTCGI

Что это за ...? Где ты это откопал? Положи на место!

anonymous
()

Кстати - функция на PHP делает несколько больше чем функция на Lua. Поправь и перемеряй. Возможно что парево выделки не стоит.

anonymous
()
Ответ на: комментарий от snoopcat

сначала (когда юзеров было около 50) всё было хорошо, а теперь в часы пик CPU Load прыгает от 10 до 99% (спасибо mysqld+php5-cgi) и обычный select может выполняться 10 секунд, пока нагрузка не спадёт

Типичная картина мускуля под нагрузкой. Попробуй, профит должен быть, postgres у меня так не захлебывается, даже 100% CPU равномерно распределяет между задачами.

anonymous
()
Ответ на: комментарий от snoopcat

Пичально тебе.

Ну вот я написал функцию на сишке: https://gist.githubusercontent.com/superhackkiller1997/c479a4216b3ab15171db/r... - там в районе мегабайта исходник.

Гинератор - там 10-15строчек на сишке.

Эта фигня в зависимости от фазы луны выдаёт ~100тактов. Там отсилы десяток переходов. При средней частоте процессора 2.5 - это 100/2.5 ~40наносекунд. Т.е. примерно в 750тысяч раз быстрее твоего результата на луа с мускулом.

anonymous
()
Ответ на: комментарий от anonymous

да, круто, конечно, но некоше'rно таки.
цель перехода с php+mysql на lua+pgsql не в выигрыше сферических наносекунд в вакууме, а в стабильности работы и отклика

snoopcat ★★★★★
() автор топика
Ответ на: комментарий от snoopcat

да, круто, конечно, но некоше'rно таки.

Щито?

Яб тебя даже не обижал, но за такую наглость и бездарность, с которой обезьяна пытается нести херню даже не понимания о чем кукарекает - я не прощаю.

цель перехода с php+mysql на lua+pgsql

Мне покласть с какого ты там говна на какое преходишь.

не в выигрыше сферических наносекунд в вакууме

Да ты ещё тупорылое, ублюдок, тут выигрывается 750000раз. Наносекунды, обезьяна услышала про наносекунды.

а в стабильности работы

о да, обезьяна, ты же мне скажешь что тут «не стабильно»?

отклика

Отклик, отклик. Ещё раз для дауна - у функции литенси 40нанасекунд в пределе. Ты даже измерить её не сможешь.

Просто уйди.

anonymous
()
Ответ на: комментарий от snoopcat

Ну дак ты попытайся ответить, обезьяна. Или думаешь ко-ко-ко - кинул шаблонную недофразу, которой ты научился в своей птушке и все подумали, что ты не обосрался?

Как просто жить ублюдком, да? За балабольство отвечать не надо, обосрался - да и пофиг. В чем смысл жить таким ничтожеством? Давай, даунёнок, я тебе повторю вопросы, а то возможно ты их не осилил понять:

да, круто, конечно, но некоше'rно таки.

В чем «но некоше'rно», и нахрена ты это вообще сюда приплёл.

цель перехода с php+mysql на lua+pgsql

Причем тут твои «php+mysql» и «lua+pgsql»?

не в выигрыше сферических наносекунд в вакууме

А где я выигрываю «наносекунд в вакууме»? Я какбэ выигрываю почти 6 дпорядков.

а в стабильности работы

Причем тут «стабильность», ты просто в очередной раз кинул шаблонную фразу, которое тебе рассказали на курсах пхп в птушке?

Ты же мне расскажешь, что в моей функции не надёжного? Она абсалютно надёжна - это доказывается изи - там есть кейс на абсалютно все возможные комбинации входных строк.

отклика

Ещё одно слово с курсов пхп. Ты же мне расскажешь как моя функция помешает твоему «отклику»? Или в очередной раз обосрался?

anonymous
()
11 января 2016 г.
Ответ на: комментарий от anonymous

Ну вот я написал функцию на сишке: https://gist.githubusercontent.com/superhackkiller1997/c479a4216b3ab15171db/r... - там в районе мегабайта исходник.

Извращенец! Скажи хоть, что сгенерировал исходник, а не вручную писал. А то я вообще о тебе плохого мнения буду.

anonymous
()
Ответ на: комментарий от anonymous

мегабайта исходник. Гинератор - там 10-15строчек на сишке

Кстати эти свитчи вчера в другой теме вспоминали, опять же не подумав что оно сгенерено.

deep-purple ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.