История изменений
Исправление
KRoN73,
(текущая версия)
:
cast KRoN73, образно говоря, мне нужна печь от которой можно плясать :-)
Посмотри цифры по sysbench. Типа такого скрипта:
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
SIZE=1000000
DB=TMP_SYSBENCH
USER=`cat /root/.my.cnf | grep ^user= | head -n1 | cut -d= -f2`
PASS=`cat /root/.my.cnf | grep ^password= | head -n1 | cut -d= -f2`
HOST=`cat /root/.my.cnf | grep ^host= | head -n1 | cut -d= -f2`
mysql -e "CREATE DATABASE $DB;"
RESULT_FILE=$(hostname)-$(date +%Y-%m%d-%H%M)-host-$HOST-big-complex-rw.txt
sudo mysql -e "SELECT @@version;" > $RESULT_FILE
echo "--- MAKE TEST -----------------------------------" >> $RESULT_FILE
echo Make test
/usr/bin/time sysbench --test=oltp --oltp-table-size=$SIZE \
--mysql-db=$DB --mysql-user=$USER --mysql-password=$PASS --mysql-host=$HOST \
prepare >> $RESULT_FILE 2>&1
echo "--- RUN TEST -----------------------------------" >> $RESULT_FILE
echo Begin test
sysbench --test=oltp --oltp-table-size=$SIZE --mysql-db=$DB --mysql-user=$USER --mysql-password=$PASS --mysql-host=$HOST \
--oltp-test-mode=complex --oltp-read-only=off \
--max-time=30 --max-requests=0 --num-threads=8 run >> $RESULT_FILE
echo Cleanup
sysbench --test=oltp --oltp-table-size=$SIZE --mysql-db=$DB --mysql-user=$USER --mysql-password=$PASS --mysql-host=$HOST cleanup
mysql -e "DROP DATABASE $DB;"
Я уже наткнулся на то, что большинство бюджетных VPS (при чём мало зависимо от цены) сами по себе имеют отвратительную производительность по mysql за пределами простейших запросов. И никакой оптимизацией это не разрулить :-/
Например, тупо по числу операций (total number of events, больше = лучше) у меня получается так:
- Домашний сервер (CPU: 2550, SSD): 57K
- VDS Хетцнер (CPU: 4770, HDD): 51K
- VDS Scaleway (CPU: Atom C2750, SSD): 39K
- VPS Aruba: 6K
- VPS Scaleway: 5K
- VPS DigitalOcean: 2K
На лёгкие форумные/блоговые задачи цифр VPS хватает, чуть таблицы посложнее с внешними ключами и джойнами — всё, единичные запросы страниц начинают длиться, порой, секундами, о работе под нагрузкой и говорить нечего :)
Процент более 30% и требуется увеличить параметры tmp_table_size (текущее значение: 128 МБ)
Ну, у меня в конфиге самого жирного сервера (оперативки — 32Гб, объём /var/lib/mysql — 49Гб) так:
# Значение по умолчанию 16 МБ, если вы не используете MEMORY таблиц,
# то установите это значение равным tmp_table_size.
max_heap_table_size = 2G
# tmp_table_size — максимальный размер памяти, выделяемой для временных таблиц,
# создаваемых MySQL для своих внутренних нужд. Это значение также
# ограничивается переменной max_heap_table_size, поэтому в итоге будет выбрано
# минимальное значение из max_heap_table_size и tmp_table_size, а остальные
# временные таблицы будут создаваться на диске. Значение по умолчанию зависит
# от системы, попробуйте установить его равным 32 МБ и понаблюдать за переменной
# состояния Created_tmp_disk_tables, ее значение должно быть как можно меньше.
tmp_table_size = 2G
Исходная версия
KRoN73,
:
cast KRoN73, образно говоря, мне нужна печь от которой можно плясать :-)
Посмотри цифры по sysbench. Типа такого скрипта:
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
exit 1
fi
SIZE=1000000
DB=TMP_SYSBENCH
USER=`cat /root/.my.cnf | grep ^user= | head -n1 | cut -d= -f2`
PASS=`cat /root/.my.cnf | grep ^password= | head -n1 | cut -d= -f2`
HOST=`cat /root/.my.cnf | grep ^host= | head -n1 | cut -d= -f2`
mysql -e "CREATE DATABASE $DB;"
RESULT_FILE=$(hostname)-$(date +%Y-%m%d-%H%M)-host-$HOST-big-complex-rw.txt
sudo mysql -e "SELECT @@version;" > $RESULT_FILE
echo "--- MAKE TEST -----------------------------------" >> $RESULT_FILE
echo Make test
/usr/bin/time sysbench --test=oltp --oltp-table-size=$SIZE \
--mysql-db=$DB --mysql-user=$USER --mysql-password=$PASS --mysql-host=$HOST \
prepare >> $RESULT_FILE 2>&1
echo "--- RUN TEST -----------------------------------" >> $RESULT_FILE
echo Begin test
sysbench --test=oltp --oltp-table-size=$SIZE --mysql-db=$DB --mysql-user=$USER --mysql-password=$PASS --mysql-host=$HOST \
--oltp-test-mode=complex --oltp-read-only=off \
--max-time=30 --max-requests=0 --num-threads=8 run >> $RESULT_FILE
echo Cleanup
sysbench --test=oltp --oltp-table-size=$SIZE --mysql-db=$DB --mysql-user=$USER --mysql-password=$PASS --mysql-host=$HOST cleanup
mysql -e "DROP DATABASE $DB;"
Я уже наткнулся на то, что большинство бюджетных VPS (при чём мало зависимо от цены) сами по себе имеют отвратительную производительность по mysql за пределами простейших запросов. И никакой оптимизацией это не разрулить :-/
Например, тупо по числу операций (total number of events, больше = лучше) у меня получается так:
- Домашний сервер (CPU: 2550, SSD): 57K
- VDS Хетцнер (CPU: 4770, HDD): 51K
- VDS Scaleway (CPU: Atom C2750, SSD): 39K
- VPS Aruba: 6K
- VPS Scaleway: 5K
- VPS DigitalOcean: 2K
На лёгкие форумные/блоговые задачи цифр VPS хватает, чуть таблицы посложнее с внешними ключами и джойнами — всё, единичные запросы страниц начинают длиться, порой, секундами, о работе под нагрузкой и говорить нечего :)
Процент более 30% и требуется увеличить параметры tmp_table_size (текущее значение: 128 МБ)
Ну, у меня в конфиге самого жирного сервера так:
# Значение по умолчанию 16 МБ, если вы не используете MEMORY таблиц,
# то установите это значение равным tmp_table_size.
max_heap_table_size = 2G
# tmp_table_size — максимальный размер памяти, выделяемой для временных таблиц,
# создаваемых MySQL для своих внутренних нужд. Это значение также
# ограничивается переменной max_heap_table_size, поэтому в итоге будет выбрано
# минимальное значение из max_heap_table_size и tmp_table_size, а остальные
# временные таблицы будут создаваться на диске. Значение по умолчанию зависит
# от системы, попробуйте установить его равным 32 МБ и понаблюдать за переменной
# состояния Created_tmp_disk_tables, ее значение должно быть как можно меньше.
tmp_table_size = 2G