mysyslog.ru

1 Март 2010

jot и seq или как упростить себе работы с циклами

написано в рубрике: linux — Метки: , , — constantine.malov @ 13:17

jot (FreeBSD)
seq (Linux)
две простые утилиты для работы с последовательностями, прекрасная альтернатива замены for в shell скриптах.
(далее…)

21 Сентябрь 2009

Mysql – быстрый заход в консоль.

написано в рубрике: dba — Метки: — constantine.malov @ 15:40

Многие люди используют для управления базами или phpmyadmin или другие GUI программы. Я же предпочитаю консольную программу mysql. У того же phpmyadmin есть хорошее качество любого web приложения — оно может запоминать логин и пароль от базы, что очень удобно. Но и для консольной программы есть возможность организовать «быстрый» вход. При запуск mysql (и другие консольные программы из набора поставки mysql) просматривает домашний каталог пользователя в поисках файла .my.cnf, в котором могут быть какие-то настройки переменных сессии. В нем же можно задать и логин/пароль. Делается это в разделе [client]:

[client]
user=root
password=ifdJhfhb4n

Теперь все консольные программы будут автоматически подставлять логин и пароль из этого файла. Конечно же такая настройка понижает безопасность сервера mysql, потому необходимо позаботиться об безопасности файла. В данном случае используется учетная запись root и для сервера mysql и сервера как такового:

# chown -R root /root
# chmod -R 700 /root
# ls -la /root

-rwx—— 1 root root 27 May 1 23:15 .my.cnf

Mysql — настройка после установки.

написано в рубрике: dba — Метки: — constantine.malov @ 15:38

Как правило, сразу после установки mysql… сразу начинают использовать. Но настройки «из коробки» подходят для небольших проектов с небольшой интенсивностью относительно простых запросов. Отсюда низкая производительность базы. А ведь достаточно поменять всего несколько настроек, чтобы ситуация изменилась кардинально. Сразу оговорюсь, речь будет идти в первую очередь про MyISAM, так как именно этот тип таблицы до сих пор используется наиболее часто (отчасти тут виноваты и настройки по умолчанию — именно этот движок таблиц установлен изначально для создания таблиц без указания типа).
(далее…)

RAMFS и TMPFS в Linux

написано в рубрике: linux — Метки: , — constantine.malov @ 14:56

Жесткие диски — одна из самых медленных подсистем компьютера, иногда его пропускной способности очень не хватает. Выход — использовать диски в памяти. Для этого выделяется область памяти, в которую можно записывать файлы или считывать из нее файлы, как с обычного раздела жесткого диска. Но так операции записи/чтения происходят в памяти, то такой «дисковый раздел» по настоящему быстр.
В Linux есть две реализации дисков в память: tmpfs и ramfs. По сути они делают одно и тоже, но есть различия в их работе, которые нужно знать и учитывать при выборе.
Как создать диск в памяти? Сперва нужно создать каталоги для монтирования, потом создать диски в памяти
# mkdir /mnt/tmpfs /mnt/ramfs
# mount -t tmpfs -o size=100m tmpfs /mnt/tmpfs
# mount -t ramfs -o size=100m ramfs /mnt/ramfs
Если запустить mount, то мы увидим среди прочего
# mount

tmpfs on /mnt/tmpfs type tmpfs (rw,size=100m)
ramfs on /mnt/ramfs type ramfs (rw,size=100m)
Все очень похоже, но в чем тогда разница? При записи небольших файлов вы никогда ее и не заметите, но при больших объемах данных разница принципиальна.
Ramfs увеличивается динамически. Т.е. Если вы выделили 20 мегабайт под раздел tmpfs и попробуете записать 21 мегабайт, то у вас ничего не получится, будет выдано сообщение о нехватке места, а ramfs спокойно затребует нужное место из памяти. Причем, если у вас 4 Гб памяти, то при заполнении раздела ramfs в 4Гб скорее всего весь сервер зависнет.
Еще одна важная особенность, tmpfs использует swap, т.е. если физической памяти сервера не хватает, то tmpfs потеряет все свои плюсы. Ramfs напротив использует исключительно физическую память.

7 Апрель 2009

Еще один важный параметр работы MySQL

написано в рубрике: dba — Метки: — constantine.malov @ 11:33

При записи, удалении или изменении таблиц mysql, СУБД выполняет блокировку таблицы, чтобы не повредить данные. Если блокировки выполняются долго – то это проблема. Т.е. запросы на изменения данных будут происходить дооолго.
Для того, чтобы посмотреть, были ли задержки при выполнении блокировок,нужно выполнить такой запрос:

  1.  
  2. mysql> SHOW STATUS LIKE ‘Table_locks_%’;
  3. +———————–+———+
  4. | Variable_name         | Value   |
  5. +———————–+———+
  6. | Table_locks_immediate | 2473395 |
  7. | Table_locks_waited    | 459     |
  8. +———————–+———+
  9.  

Если Table_locks_waited очень большое, то нужно что-то делать. Как вариант, если используется MyISAM, переходить на InnoDB. MyISAM блокирует изменяемую таблицу целиком, а InnoDB блокирует только изменяемые записи, что намного эффективнее при большой интенсивности изменений в базе.

3 Январь 2009

Настройка производительности MySQL (MyISAM)

написано в рубрике: dba — Метки: , — constantine.malov @ 15:51


В свое время я достаточно долго искал в интернете внятное описание тюнинга производительности mysql и ничего подходящего не находил. На mysql.com главы документации о производительности носят скорее декларативный характер – “Сделайте так, и все будет хорошо” – без описание почему именно такие значения нужно выставить. Сейчас ситуация несколько меняется, появляются статьи о правильной настройке с объяснениями, похоже в основном благодаря книге High Performance MySQL. Этой публикацией я открываю небольшой цикл статей, призванных помочь системным администраторам и web-мастерам настраивать mysql.

(далее…)

Работает на WordPress