5.5.2 Настройка параметров сервера | Оглавление | 5.5.4 Как MySQL использует память |
Большинство из последующих тестов выполняются под Linux с использованием тестов производительности MySQL, но они должны дать некоторое представление и для других операционных систем и рабочих нагрузок.
Самый быстрый исполняемый код получается при линковании с помощью -static
.
Под Linux наиболее быстрый код можно получить при компилировании
pgcc
с опицей -O3
. Чтобы скомпилировать sql_yacc.cc
с этой опцией, требуется
около 200 Mб памяти, поскольку компилятор gcc/pgcc
забирает много памяти.
При конфигурировании MySQL следует также
установить CXX=gcc
- чтобы не линковалась библиотека libstdc++
(в этом
нет необходимости). Следует учитывать, что при некоторых версиях
компилятора pgcc
результирующий код будет работать только на настоящих
процессорах Pentium, даже если использовать возможность компилятора
выдавать результирующий код, работоспособный на всех процессорах типа x586
(например AMD).
Используя просто лучший компилятор и/или лучшую опцию компилятора, можно получить для приложения увеличение скорости на 10-30%. Это особенно важно, если вы компилируете сервер SQL самостоятельно!
Мы протестировали такие компиляторы как Cygnus CodeFusion и Fujitsu, но ни тот, ни другой не были достаточно свободны от ошибок, чтобы можно было скомпилировать MySQL с оптимизирующими параметрами.
При компилировании MySQL необходимо включать только наборы кодировок,
которые вы собираетесь использовать (опция --with-charset=xxx
).
Стандартная поставка MySQL скомпилирована с поддержкой всех кодировок.
Ниже приводится обзор некоторых действий, которые мы предпринимали для ускорения работы:
pgcc
и компиляции всего кода с -O6
сервер mysqld
на
1% быстрее, чем при gcc 2.95.2
.
-static
) результирующий
исполняемый файл сервера будет на 13% медленнее работать под
управлением Linux. Обратите внимание: вы спокойно можете использовать
динамическую библиотеку MySQL. Это касается только сервера и актуально
только там, где нужна высокая производительность.
mysqld
с помощью strip libexec/mysqld
можно получить прирост скорости результирующего двоичного кода до 4%.
localhost
MySQL по умолчанию будет
использовать сокеты).
--with-debug=full
, то для
большинства запросов потери в производительности будут составлять до
20%, но некоторые запросы могут выполняться значительно дольше (тесты
производительности MySQL работают на 35% медленнее). При использовании
опции --with-debug
теряется только 15% производительности. При запуске
mysqld, откомпилированного с --with-debug=full
и --skip-safemalloc
,
результат должен почти таким же, как и при компиляции с --with-debug
.
gcc 2.95.2
.
gcc 2.95.2
для UltraSPARC с опцией -mcpu=v8
-Wa,-xarch=v8plusa
дает прирост производительности на 4%.
--log-bin
делает MySQL на 1% медленнее.
gcc
без указателей
фреймов -fomit-frame-pointer
или -fomit-frame-pointer -ffixed-ebp
делает mysqld на 1-4% быстрее.
Поставка MySQL под Linux, которую предоставляет MySQL AB, обычно
компилировалась с pgcc
, но мы должны были вернуться к обычному компилятору
gcc
из-за ошибок в pgcc
, которая могут генерировать код, не исполняемый на
AMD. Пока эти ошибки не будут устранены, мы будем продолжать использовать
gcc
, однако если ваш компьютер не относится к типу AMD, то можно получить
более быстрый двоичный код, компилируя его с pgcc
. Стандартный двоичный
код MySQL для Linux слинкован статически, чтобы сделать его более быстрым
и более переносимым.
5.5.2 Настройка параметров сервера | Оглавление | 5.5.4 Как MySQL использует память |