Документация MySQL

22.08.2008

. Там, где это возможно, приводятся имена серверных
переменных, относящихся к использованию памяти:
) используется совместно всеми
потоками; другие буферы, используемые данным сервером, выделяются при
необходимости (see section
).
Каждое соединение использует определенное пространство в памяти для
конкретного потока: стек (по умолчанию 64Kб, переменная
),
буфер соединения (переменная
). Буфер соединения и буфер результата
при необходимости динамически расширяются вплоть до
. При выполнении запроса также выделяется память для
копии строки данного текущего запроса.
Все потоки совместно используют одну и туже базовую память.

Только сжатые таблицы типа
имеют распределенную память.
Это объясняется тем, что 4 Гб памяти (адресуемой в рамках 32-битной
разрядности) мало для достаточно больших таблиц. Когда системы с
64-разрядными адресным пространством получат более широкое
распространение, мы сможем добавить в сервер общую поддержку для
распределения памяти.
Каждый запрос, выполняющий последовательный просмотр таблицы,
размещается в буфере чтения (переменная
).
При чтении строк в "случайном" порядке (например, после сортировки)
выделяется буфер "случайного чтения", чтобы избежать поиска по диску
(переменная
).
Все объединения выполняются за одну операцию, и большинство
объединений может производиться даже без временных таблиц. Большинство
временных таблиц располагаются в оперативной памяти (в динамически
выделяемой области
). Временные таблицы с записями большой длины
(вычисляемой как сумма длин всех столбцов) или таблицы, содержащие
столбцы
, хранятся на диске. В версиях MySQL до 3.23.2 существует
проблема, заключающаяся в том, что если таблицы
, то возникает
ошибка
. В более новых версиях эта проблема
при необходимости решается путем автоматического преобразования
хранящихся в оперативной памяти
,
расположенные на диске. Чтобы обойти эту проблему, можно увеличить
размер временных таблиц установкой опции
в клиентской программе (see section ).
В версии MySQL 3.20 максимальный размер временной таблицы
был равен
, так что при использовании данной версии
необходимо увеличить значение
. Можно также запустить
- для того, чтобы всегда хранить
временные таблицы на диске. Однако это будет влиять на скорость многих
сложных запросов.
Большинство запросов, выполняющих сортировку, размещаются в буфере
сортировки и в 0-2 временных файлах, в зависимости от размера
результирующего набора данных (see section
).
Почти все операции, связанные с анализом и вычислениями, выполняются в
пространстве локальной памяти. Для небольших задач не требуется
никаких дополнительных затрат памяти и удается избежать обычно
медленных процессов выделения и освобождения памяти. Память выделяется
только для непредвиденно больших строк (это делается с помощью функций
).
Каждый файл индексов и файл данных открываются сразу для каждого
параллельно работающего потока. Для каждого параллельного потока
выделяется место в памяти для структуры таблицы, структур столбцов для
каждого столбца и буфер размером 3 * n (где n представляет
максимальную длину строки без учета столбцов
). Для столбца
. Обработчики
таблиц
будут использовать один дополнительный буфер строки
для внутреннего представления.
Для каждой таблицы, имеющей столбцы
, буфер динамически
увеличивается при чтении больших величин
. При просмотре таблицы
выделяется буфер с размером, равным наибольшей величине
.
Обработчики всех находящихся в употреблении таблиц хранятся в кэше и
обрабатываются в порядке их поступления (режим FIFO). Обычно этот кэш
содержит 64 элемента. Если данная таблица была использована двумя
работающими потоками в одно и то же время, то кэш содержит два
элемента для такой таблицы (see section
).
закрывает все неиспользуемые таблицы и
отмечает все используемые таблицы, которые необходимо закрыть после
окончания выполнения текущего потока. Такой алгоритм позволяет
эффективно освобождать большое количество используемой памяти.
и другие программы контроля состояния системы могут сообщать,
что
использует слишком много памяти. Это может быть вызвано
расположением стеков памяти потоков по различным адресам в памяти.
Например, версия программы ps для Solaris интерпретирует неиспользуемую
память между стеками как используемую. Это можно проверить путем
выполнения допустимой перестановки с помощью
. Мы тестировали
при помощи коммерческих детекторов утечки памяти, так что никаких
потерь памяти быть не должно.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Рубрики: Без рубрики |

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.

Документация MySQL

22.08.2008

После установки MySQL (из бинарного дистрибутива или исходного кода)
необходимо проинициализировать таблицы привилегий, запустить сервер и
убедиться, что сервер работает нормально. Можно также организовать
автоматический запуск и остановку сервера, когда операционная система
соответственно начинает и прекращает работу.
shell> ./scripts/mysql_install_db
shell> cd mysql_installation_directory
shell> ./bin/safe_mysqld --user=mysql &
shell> cd mysql_installation_directory
shell> ./scripts/mysql_install_db
shell> ./bin/safe_mysqld --user=mysql &
shell> ./bin/mysqld_safe --user=mysql &
Если вы используете MySQL 4.x.
, которая будет поддерживать все
привилегии доступа к базе данных, базу данных
, которую можно
использовать для тестирования MySQL, а также записи привилегий для
пользователя, который запускает
(без каких-либо паролей). При этом также запускается сервер
.
не перезаписывает старые таблицы привилегий, так что ее
запуск будет безопасным в любом случае. Если вам не нужна база данных
, ее можно удалить с помощью
.
Тестирование проще всего выполнить из каталога наивысшего уровня
дистрибутива MySQL. Для бинарного дистрибутива таковым является ваш
каталог инсталляции (обычно что-нибудь вроде
). Для
дистрибутива в виде исходного кода это - главный каталог вашего набора
исходных кодов MySQL.
В командах, представленных в настоящем разделе и последующих подразделах,
представляет собой путь к тому местоположению, где устанавливаются
программы вроде
. Для бинарного дистрибутива это
каталог
внутри дистрибутива. Для дистрибутива в виде исходного кода
, если при запуске
не указан иной, чем
инсталляционный каталог.
- место, где устанавливается сервер
. Для бинарного
дистрибутива это то же самое, что и
. Для дистрибутива в виде
исходного кода
.
Подробное описание тестирования: Если необходимо, запустите сервер
и установите исходные
таблицы привилегий MySQL, содержащие те привилегии, которые
определяют, каким способом пользователям разрешено подключаться к
серверу. Обычно это делается с помощью скрипта
Как правило,
требует запуска только первый раз при
установке MySQL. Таким образом, если производится модернизация
существующей установки, то данный этап можно пропустить (однако скрипт
совершенно безопасен для использования и не обновляет
никаких уже существующих таблицы; поэтому если у вас нет уверенности в
том, как поступать, то всегда можно запустить
). Скрипт
,
,
,
,
, and
. Описание исходных привилегий
дается в разделе See section
. Если в двух
словах, то эти привилегии позволяют пользователю root MySQL делать все,
что угодно, и любому пользователю позволяют создавать или использовать
базы данных с именем
. Если таблицы
привилегий не установлены, то в системном журнале при запуске сервера
появится следующая ошибка:
mysqld: Can't find file: 'host.frm'
Такая ошибка может появиться и в случае бинарного дистрибутива MySQL,
если вы не начали работу MySQL с точного выполнения команды
'./bin/safe_mysqld'
! See section
, оболочка
.
Возможно, вам потребуется запускать
. Однако при
желании вы можете запускать сервер MySQL как непривилегированный (не-
)
пользователь, при условии, что этот пользователь может только читать файлы
из каталога базы данных и записывать в него файлы. Инструкции по запуску
MySQL в качестве непривилегированного пользователя даются в разделе See section
. Если возникнут проблемы с
, обращайтесь к разделу See section
. Дистрибутив MySQL обеспечивает несколько вариантов
запуска скрипта
Чтобы изменить исходные привилегии, которые устанавливаются в
таблицах привилегий, вам, возможно, потребуется отредактировать
перед запуском. Это полезно, если нужно установить
MySQL на нескольких машинах с одними и теми же привилегиями. В
таком случае вам, возможно, потребуется только добавить несколько
дополнительных команд
mysql.user
mysql.db
!
Если необходимо изменить записи в таблицах привилегий после их
установки, то можно запустить
, затем использовать
и применять команды SQL для
модификации таблиц привилегий напрямую.
Можно также создать таблицы привилегий полностью заново после того,
как они были уже созданы. Это можно сделать после установки таблиц,
а затем воссоздать после редактирования
.
Более подробная информация о приведенных выше альтернативах находится в
разделе See section .
Если возникнут проблемы с запуском сервера, See section
.
для проверки, что сервер работает. Простую
проверку того, что сервер функционирует и отвечает на подключения,
обеспечивают следующие команды:
будет иметь небольшие различия в зависимости
от используемой платформы и версии MySQL, но должен быть похож на
приведенный ниже:
shell> BINDIR/mysqladmin version
mysqladmin Ver 8.14 Distrib 3.23.32, for linux on i586
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license.

Server version 3.23.32-debug
Protocol version 10
Connection Localhost via Unix socket
TCP port 3306
UNIX socket /tmp/mysql.sock
Uptime: 16 sec

Threads: 1 Questions: 9 Slow queries: 0
Opens: 7 Flush tables: 2 Open tables: 0
Queries per second avg: 0.000
Memory in use: 132K Max memory used: 16773K
Чтобы получить представление о том, что еще можно делать с помощью
, запустите эту команду с опцией
.
Убедитесь, что можете остановить сервер:
Убедитесь, что можете перезапустить сервер. Делайте это, используя
. Например:
терпит неудачу, попытайтесь запустить команду из каталога
установки MySQL (если вы уже не там). Если команда по-прежнему не
работает, см. раздел See section
.
Запустите несколько простых тестов, чтобы убедиться, что сервер
работает. Вывод должен быть похож на приведенный ниже:
shell> BINDIR/mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
+-----------+

shell> BINDIR/mysqlshow mysql
Database: mysql
+--------------+
| Tables |
+--------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+--------------+

shell> BINDIR/mysql -e "SELECT host,db,user FROM db" mysql
+------+--------+------+
| host | db | user |
+------+--------+------+
| % | test | |
| % | test_% | |
+------+--------+------+
каталога установки MySQL находится набор тестов
производительности, который можно использовать для сравнения работы MySQL
на различных платформах. Каталог
содержит результаты
большого количества запусков для различных баз данных и платформ. Чтобы
запустить все тесты, выполните следующие команды:
, то, вероятно, вы работаете с
пакетом RPM для бинарного дистрибутива (в пакеты RPM с дистрибутивами
исходного кода включается каталог тестов производительности). В этом
случае прежде чем использовать набор тестов производительности, необходимо
его установить. Начиная с версии MySQL 3.22, существуют RPM-файлы тестов
производительности,
'mysql-bench-VERSION-i386.rpm'
, которые содержат код
тестов производительности и данные. Имея дистрибутив исходного кода, можно
также запустить эти тесты в подкаталоге
. Например, чтобы запустить
'auto_increment.tst'
, сделайте следующее:
shell> BINDIR/mysql -vvf test < ./tests/auto_increment.tst
'./tests/auto_increment.res'
.

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Рубрики: Без рубрики |

Оставить комментарий

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.