Справочное руководство по MySQL версии 4.1.1-alpha


1.11.1 Сравнение MySQL и mSQL


Производительность

Точные результаты сравнения скорости работы можно найти в постоянно пополняющейся библиотеке проведенных тестов по MySQL (see section 5.1.4 Набор тестов MySQL (The MySQL Benchmark Suite)).

СУБД mSQL, благодаря отсутствию затрат дополнительных ресурсов на создание потоков, а также за счет компактности синтаксического анализатора, небольшого количества функций и упрощенной системы безопасности, должна выигрывать в скорости выполнения:

  • тестов на выполнение циклов соединение-отсоединение, при каждом соединении выполняющих какой-нибудь простой запрос

  • операций INSERT над простыми таблицами, содержащими небольшое количество столбцов и ключей

  • CREATE TABLE и DROP TABLE

  • операций SELECT чего-нибудь, кроме индексов (очень просто выполняется просмотр таблицы)

    Поскольку такие операции очень просты, при больших затратах ресурсов на начальном этапе выиграть в скорости их выполнения достаточно сложно. Поэтому лучшие результаты MySQL может показать лишь после установки соединения. С другой стороны, MySQL значительно превосходит mSQL (и большинство других реализаций SQL) при:

    • выполнении сложных операций SELECT.

    • загрузке объемных результатов (протокол, применяющийся в MySQL, превосходит другие по качеству, скорости и безопасности).

    • работе с таблицами, имеющими строки переменной длины, так как обработка данных в MySQL реализована более эффективно и в нем допускается создание индексов для столбцов с типом VARCHAR.

    • обработке таблиц, содержащих большое количество столбцов.

    • обработке таблиц с длинными записями.

    • выполнении операций SELECT с несколькими выражениями.

    • выполнении операций SELECT над объемными таблицами.

    • одновременной работе с несколькими соединениями. Архитектура MySQL Server является полностью многопоточной. Для каждого соединения создается отдельный поток и, таким образом, ни одному из них не приходится ожидать завершения другого (если, конечно, один из потоков не занимается изменением таблицы, доступ к которой требуется другому потоку). В mSQL же после установки одного соединения остальным приходится ожидать его завершения, вне зависимости от сложности и времени выполнения примененного в этом соединении запроса. По завершении первого соединения начинает обслуживаться второе, а все остальные снова ждут своей очереди.




      - Начало -  - Назад -  - Вперед -