Я работаю в новом веб-приложении. Я использовал MySQL для веб-приложений. Но теперь я изучаю параметр PostgreSQL. Я сделал простой тест производительности, и я заметил, что PostgreSQL медленнее, чем MySQL.PostgreSQL vs MySQL простая производительность запросов
Когда вы создаете веб-сайт или веб-приложение, вам необходимо обрабатывать несколько запросов инициализации каждого запроса. Мои тесты:
PgSQL
30000 pgsql execs - 73.53459s
30000 pgsql execs - 88.41614s
30000 pgsql execs - 75.76565s
-----------------------------
Average 79.23879s
378 queries per second or ~2.6 ms per query
MySQL
30000 mysql execs - 22.19208s
30000 mysql execs - 17.81079s
30000 mysql execs - 23.30936s
-----------------------------
Average 21,10407s
~1421 query per second or ~0.7 ms per query
MySQL пробег ~ 4 раза быстрее, чем PostgreSQL. Нормально ли это? Не могу ли я использовать PostgreSQL для веб-приложения (SAAS) с большим количеством подключений?
* Еще один тест, который я сделал с одновременным доступом, оставил меня очень обеспокоенным.
Код испытания (оба равны и таблицы TESTE только есть 2 записи и индекс id_teste):
<?php
$db = new PDO('pgsql:host=127.0.0.1 dbname=teste user=postgres password=123456');
$t = 30000;
$ini = microtime(true);
for ($i=0;$i<$t;$i++)
{
$ex = $db->prepare('select * from teste where id_teste = 1');
$ex->execute();
}
$end = microtime(true);
echo '<b>'. $t .'</b> pgsql execs - <b>'. number_format($end-$ini,5,'.','') .'</b>s';
?>
Обновление: MySQL таблица двигатель Innodb. Оба теста на одном устройстве. я сделал новый тест с mysqli_query и pg_query и результаты были лучше:
30000 pgsql execs - 28.18265s
30000 pgsql execs - 23.54120s
30000 pgsql execs - 23.43689s
Average 25,05358s
~1197 queries per second or ~0,8 ms per query
30000 mysql execs - 23.89033s
30000 mysql execs - 19.40293s
30000 mysql execs - 27.75116s
Average 23,68147s
~1266 queries per second or ~0,79 ms per query
водитель Может PDO PgSQL проблема, как комментировали или MySQLi медленно.
О других вариантах простого запроса, таких как кеш, да, это вариант, но он содержит много простых запросов в больших таблицах, и эти данные необходимо хранить в СУБД. Пример: Города, люди, пользователи, страницы. Все они использовались там, где id = X. Несмотря на то, что мы больше работаем, мы можем справиться с этим.
Что такое типы таблиц в mysql? –
Я не могу представить себе какое-либо веб-приложение, которое выполняет этот (!) Очень простой запрос в (почти) пустой таблице. Если производительность имеет значение, зачем вводить накладные расходы, например PDO? –
Игрушка микробенчмарк. Если вы хотите получить просто супер высокую производительность по тривиальным запросам, используйте K/V-хранилище, а не RDBMS. Как правило, вы используете что-то вроде Redis в качестве слоя кэширования, а затем RDBMS для постоянного и надежного хранения и аналитики. –