FAQ MySQL

<< Назад  Главная Партнерство Купить Контакты WEB Связь Электроника Энергетика Строительство Заработок

 

Вопрос. Что такое MySQL?
MySQL – сервер баз данных. MySQL характеризуется большой скоростью, устойчивостью и легкостью в использовании, является идеальным решением для малых и средних приложений.

Вопрос. Где можно взять MySQL?
На официальном сайте http://www.mysql.com или на http://www.mysql.ru/download. Рекомендуем брать с сервера последнюю стабильную версию.

Вопрос. Хочу изучать MySQL. С чего начать?
Советуем начать изучение с раздела документация. Из нее вы не только узнаете начальные сведения, но, и самое главное, освоите правильные приемы работы.

Вопрос.Что такое PHP?
PHP – это скрипт-язык (scripting language), который интерпретируется и выполняется на сервере.

Вопрос. Что такое Perl?
Perl - это аббревиатура, расшифровывающаяся как Practical Extraction and Report Language (практический язык извлечений и отчетов).


Технические вопросы:


Вопрос. Как увеличить производительность выполнения mysqldump?
При дампе очень больших таблиц mysqldump пытается использовать очень большой объем ОЗУ.
Чтобы он этого не делал нужно использовать опцию "-q".

Вопрос. Как определить и исправить повреждение MySQL базы?
Для тестирования повреждений рекомендуется выполнять: myisamchk tables[.MYI]
Параметры уровня проверки:
--medium-check - средний
--extend-check - расширенный

В crontab:
35 0 * * 0 /usr/local/mysql/bin/myisamchk --fast --silent /path/to/datadir/*/*.MYI
Внимание, myisamchk нужно запускать при _не_ запущенном mysqld, иначе нужно использовать утилиту mysqlcheck (mysqlcheck --repair --analyze --optimize --all-databases -- auto-repair)

Восстановление таблицы:
REPAIR TABLE tbl_name или myisamchk -r table_name или myisamchk --safe-recover table_name


Вопрос. Как произвести оптимизацию хранилища в MySQL?
Почистить "дырки" (дефрагментация), обновить статистику и отсортировать индексы:
OPTIMIZE TABLE имя_таблицы;
или использовать: myisamchk --quick --check-only-changed --sort-index --analyze
Внимание, myisamchk нужно запускать при _не_ запущенном mysqld, иначе нужно использовать утилиту mysqlcheck
(mysqlcheck --repair --analyze --optimize --all-databases --auto-repair)

Апдейт статистики оптимизатора:
ANALYZE TABLE имя_таблицы;
или использовать: myisamchk --analyze

Рекомендуется регулярно выполнять:
isamchk -r --silent --sort-index -O sort_buffer_size=16M db_dir/*.ISM
myisamchk -r --silent --sort-index -O sort_buffer_size=16M db_dir/*.MYI


Вопрос. Как бэкапить данные в MySQL?
Бэкап структуры:
mysqldump --all --add-drop-table [--all-databases] --force [--no-data] [-c] -- password=password --user=user [база] [таблицы] > backup_file
( -c - формировать в виде полных INSERT. --all-databases - бэкап всех баз, --no-data - бэкап только структуры таблиц в базах, [таблицы] - бэкапить только указанные таблицы.)

Восстановление: mysql < backupfile
(для прямой вставки из текстового файла можно воспользоваться mysqlimport)
(для анализа структуры базы, например, списка таблиц: mysqlshow <база>)


Вопрос. Как обеспечить корректную работу MySQL с русскими символами при сортировке и выборке данных?
В /etc/my.cnf вписать в блоке [mysqld]: default-character-set=koi8_ru (или cp1251)

При работе с базой можно выставить рабочую кодировку через: SET CHARACTER SET koi8_ru


Вопрос. Как добавить нового пользователя или БД в MySQL?
insert into user (host,user,password) values ('localhost', 'пользователь', password('пароль'));

insert into db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv, Drop_priv,Grant_priv,References_priv,Index_priv,Alter_priv) values ('localhost','БД','пользователь','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
flush privileges;

или воспользоваться скриптом mysql_setpermission

Вопрос.Как изменить забытый MySQL административный пароль?
1. перезапустить mysqld с опцией --skip-grant-tables
2. mysqladmin -h хост -u пользователь password 'новый пароль'


Вопрос.Как работать с базой данных MySQL из Access?
Необходимо скачать MyODBC и установить, после этого в Access в базе данных - "создать / связь с таблицами" - тип файлов указываем ODBC . Для обновления таблиц удобно пользоваться служебной утилитой Access2000 "Сервис / Служебные программы / Диспетчер связанных таблиц".


Вопрос.Как сделать таблицу Exel из таблицы MySQL?
#!/usr/local/bin/perl
use DBI;
$table = "table"; $db = "base"; $db_serv = "192.168.0.1"; $user = "user"; $passwd = "password";
$c = DBI->connect("DBI:mysql:$db:$db_serv", $user, $passwd);
$statement = "select count(*) from $table";
$cc = $c->prepare($statement);
$ccc = $cc->execute;
@row = $cc->fetchrow_array;
$n = $row[0];
$statement = "select * from $table";
$cc = $c->prepare($statement);
$ccc = $cc->execute;
open F, "$ARGV[0]";
for ($i=0; $i<$n; $i++) {
@row = $cc->fetchrow_array;
print F "$row[0];$row[1];$row[3]n";
}

Запускаем скрипт:
./mysql_2_exel.pl file
После этого можно открыть файл 'file' экселем.


Вопрос.Как поместить время в формате Epoch в MySQL?
from_unixtime(989493919)


Вопрос. Как ограничить число элементов выдаваемых SELECT в MySQL?
Необходимо воспользоваться LIMIT. Первый параметр с какой записи, а второй сколько.
select * from table LIMIT 1,1;

Вопрос. Как использовать базу данных MySQL в своей программе? (под Windows)
Подключите к проекту libMySql.lib, положите заголовочные файлы из поставки MySQL в директорию заголовочных файлов вашего компилятора, либо в каталог с программой, либо вообще куда душе угодно (лишь бы сами их не потеряли), libmysql.dll в каталог с программой, и пользуетесь функциями API MySQL, которые подробнейшим образом описаны в поставляемой вместе с сервером документацией. libmysql.lib и libmysql.dll берутся после установки дистрибутива MySQL в каталоге libopt.
libmysql.lib ОБЯЗАТЕЛЬНО должен работать с libmysql.dll ТОЙ ЖЕ поставки/версии. По этой причине НАСТОЯТЕЛЬНО НЕ рекомендуется хранить libmysql.dll в системном каталоге WINDOWS! Храните свою libmysql.dll в каталоге со своей программой.
Для C++ Builder получить libmysql.lib нужно импортом из libmysql.dll:
> implib libmysql.lib libmysql.dll

Из заголовочных файлов требуются:
mysql.h
mysql_com.h
mysql_version.h
В последних версиях ещё и my_alloc.h
Всё это добро берётся после установки дистрибутива MySQL в каталоге include.

Из всех в программе подключается только mysql.h. Перед ним обязательно должно быть подключен windows.h
#include
#include

Особенности Билдеровского VCL: В программах, использующих VCL, компилятор ругается на my_socket, объявленную в mysql.h как #define my_socket SOCKET. Заменяем на #define my_socket UINT_PTR и всё работает. (SOCKET в winsock.h объявлен как typedef UINT_PTR SOCKET).