Skip to content

Шпоргалка по MySQL

rsajob edited this page Nov 15, 2012 · 2 revisions

Вот мой вариант, того, что действительно полезно:

  1. Если делаем mysqldump то на все время пока будет проходить дамп, у нас залочится запись в таблицы. При больших объемах гораздо правильнее снимать дампы со slave или использвать lvm снапшот.
  2. Чтобы правильно получить год и неделю, надо групировать по date_format(date,%x-%v). При использовании group by year(date),week(date,3) получаем, что 29-31 декабря 2008 считается как 2008,1 неделя. Все логично, но следует помнить.
  3. Статистика по табличкам, рекомендую сохранить как view.
SELECT table_name,engine,table_rows,
round(DATA_LENGTH/1024/1024,2) AS data_mb,
round(INDEX_LENGTH/1024/1024,2) AS index_mb,
round((DATA_LENGTH + INDEX_LENGTH)/1024/1024,2) AS total_mb 
FROM information_schema.tables where TABLE_SCHEMA = database();
  1. Храним ip как UNSIGNED INTEGER для преобразования в строку используем inet_aton/inet_ntoa
  2. Редкоиспользуемые данные выносим в отдельную таблицу с egnine=ARCHIVE
  3. Дампы собираем сразу с gzip. mysqldump db |gzip > dump.gz. Распаковываем zcat dump.gz |mysql db
  4. Правильно используем mysql из bash скрипта.
 -N убирает название колонок таблицы
 -B убирает псевдографику, используется таб как разделитель.
  1. Забываем слово RAID5/RAID6. Для БД актуально только RAID10/RAID1
  2. Если нужно уникальный индекс по большому текстовому полю, делаем еще одно с md5sum(textdata) и строим уникальный индекс по нему.

Ещё на хабре статься MySQL шпаргалки

Clone this wiki locally