Содержание

FAQ MySQL

Домашняя страница MySQL

Читайте также:

Движок БД MySQL — что это такое?

База данных — это обертка вокруг движка хранения данных. Она занимается приемом запросов и управлением ими, кэшированием и прочими обслуживающими функциями, обеспечивая работу с низкоуровневым API движка. Последний, в свою очередь, собственно и хранит данные (на диске или в памяти), работает с операционной системой и обеспечивает выдачу нужных выборок по запросу от сервера. Если раньше СУБД (связка "сервер + движок") была монолитная, то теперь во всех системах используется структура с плагинами. Движок в такой организации является просто модулем, а сам сервер не зависит от системы хранения данных. В последних редакциях классического MySQL также используется плагинная архитектура. Поэтому встроенный движок InnoDB (правда, обычно устаревшей версии) можно легко заменить на модуль другого проекта, который часто будет лучше. В альтернативных мускулу разработках, в том числе MariaDB или Drizzle, все движки изначально выполнены как плагины.

# mysql -uroot -p
Server version: 5.5.29-0ubuntu0.12.04.2 (Ubuntu)

mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

Движки хранения данных в MySQL: InnoDB, MyISAM etc.

Краткое описание современных движков хранения данных в MySQL - совместимых СУБД.

Клиенты администрирования MySQL

Как подключиться к MySQL, MariaDB из консоли

mysql -u root -p -P 3308 -S /tmp/mysql5.sock
mysql -h xxx.xxx.xxx.xxx -u root -p my_db  

Команды MySQL

Пример вывода значения переменных MySQL:

mysql -e "SHOW VARIABLES LIKE '%'\G;" | grep innodb_buffer_pool_size  -B 1 -A 1

SHOW

DESCRIBE

Команда DESCRIBE предоставляет информацию о столбцах таблицы.

Транзакции и атомарные операции MySQL

Поддержка транзакций в сервере MySQL реализуется при помощи обработчиков транзакционных таблиц типов InnoDB и BDB. Таблицы InnoDB обеспечивают соответствие требованиям ACID.

Однако для таблиц нетранзакционных типов, таких как MyISAM, в MySQL используется иная парадигма обеспечения целостности данных, получившая название атомарные операции. Атомарные операции в сравнении с транзакциями часто обеспечивают такую же или даже лучшую целостность при более высокой производительности. Поскольку сервер MySQL поддерживает обе парадигмы, пользователь может выбирать между скоростью, которую обеспечивают атомарные операции, и транзакционными возможностями для своих приложений. Такой выбор может быть сделан для каждой таблицы отдельно.

Использование подготовленных запросов

Пример использования подготовленных запросов (Prepared Statements) для PHP

mysql_query("PREPARE myinsert FROM
'INSERT INTO
mytable (name, price)
VALUES (?, ?)'");
for ($i = 0; $i < 1000; $i++){
mysql_query("SET @name = 'Товар # $i'");
mysql_query("SET @price = " . ($i * 10));
mysql_query("EXECUTE myinsert USING @name, @price");
}