MySQL Storage engines

Ликбез по движкам MySQL
На сегодняшний день MySQL поддерживает несколько движков. Наиболее популярные это MyISAM, InnoDB, но рассмотрим и другие. Получить список поддерживаемых движков вашего сервера можно командой SHOW ENGINES

mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------------------+
| Engine     | Support | Comment                                                        |
+------------+---------+----------------------------------------------------------------+
| MyISAM     | YES     | Default engine as of MySQL 3.23 with great performance         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      |
| HEAP       | YES     | Alias for MEMORY                                               |
| MERGE      | YES     | Collection of identical MyISAM tables                          |
| MRG_MYISAM | YES     | Alias for MERGE                                                |
| ISAM       | NO      | Obsolete storage engine, now replaced by MyISAM                |
| MRG_ISAM   | NO      | Obsolete storage engine, now replaced by MERGE                 |
| InnoDB     | DEFAULT | Supports transactions, row-level locking, and foreign keys     |
| INNOBASE   | YES     | Alias for INNODB                                               |
| BDB        | YES     | Supports transactions and page-level locking                   |
| BERKELEYDB | YES     | Alias for BDB                                                  |
| NDBCLUSTER | NO      | Clustered, fault-tolerant, memory-based tables                 |
| NDB        | NO      | Alias for NDBCLUSTER                                           |
| EXAMPLE    | NO      | Example storage engine                                         |
| ARCHIVE    | YES     | Archive storage engine                                         |
| CSV        | NO      | CSV storage engine                                             |
| FEDERATED  | YES     | Federated MySQL storage engine                                 |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) |
+------------+---------+----------------------------------------------------------------+

Read the rest of this entry »

Полезные bash-команды

Кто слышал о BASH? Думаю все, кто, хоть как-то, связан с IT индустрией. О синтаксисе и командах написана не одна тысяча книг. Поэтому здесь, предлагаю, рассмотреть только “редкие” команды, которые трудно найти, но могут быть полезными.
Возвращает количество файлов в том числе и во вложенных папках:

ls -R -l | wc -l

Возвращает объём папки(со вложеностями):

du -sh

Выводит максимальное разрешение текстур (wallpapper, skydom и тд) поддерживаемое системой:

xvinfo | grep max

Высчитывает количество строк в файлах по маске (параметр “*.php”) в текущей и во вложеных директориях:

find . -name "*.php" -type f -print0 | xargs -0 wc -l

Генерирует произвольный пароль в 16 (параметр -c16) символов:

/dev/urandom tr -dc A-Za-z0-9_ | head -c16 ; echo

Разбивает файл bigfile на файлы не превышающие 700 мегабайт (параметр 700m), называя новые файлы BIG_aa, BIG_ab, … (общая маска задаётся последним параметром):

split -b 700m bigfile BIG_

Выводит список популярных на машине команд с количеством вызовов:

history|awk '{a[$2]++ } END{for(i in a){print a[ i ] " " i}}'|sort -rn|head

Найти и удалить в bash

Простая команда для поиска и удаления в консоле:

 $ rm -rf `find /folder_name/ -name *patern*` 

Пример:

 $ rm -rf `find . -name .svn` 

Удалит все папки .svn из текущей и всех вложенных дерикторий.

Maximizing Your Java Application Development

Our Developer eBook, Maximizing Your Java Application Development, will help you in understanding these issues and how you can get the most out of your Java code, whether it’s porting from another language, working in the best IDE or optimizing for today’s multi-core computing environments.

Topics explored include:

  • A systematic approach for porting an existing Java-based application to a new JDK version,
  • Automating the porting of J2ME applications,
  • A comparison of the latest versions of the major IDEs in the Java development space, and
  • Parallel processing within a J2EE container.

DOWNLOAD

Настройка NAT во FreeBSD

В статье описывается процесс настройки NAT’а (Network Address Translation) на простом примере предоставления доступа к ресурсам внешней сети (или интернету) из внутренней локальной сети.

В данной статье мы будем рассматривать настройку Nat на примере раздачи интернета в локальную сеть.

Итак, у нас есть сервер под управлением FreeBSD, подключенный к сети провайдера («внешняя сеть»).
Также имеется один или несколько компьютеров («внутренняя сеть»), которым нужно дать доступ к ресурсам сети интернет.
Подключить компьютеры внутренней сети напрямую к внешней нельзя, так как у нас есть всего 1 IP-Адрес во внешней сети, который выдан нашему серверу.
Выходом из ситуации будет соединение сетей через сервер (в данной ситуации всётаки «роутер» будет более правильно) при помощи технологии NAT
Предположим что сеть провайдера имеет диапазон 123.123.123.0/24, а IP который выдал нам провайдер 123.123.123.111.
Внутренняя сеть же имеет диапазон 192.168.10.0/24 и IP нашего роутера в ней 192.168.0.1
Диапазон IP адресов во внутренней сети может быть любой, однако необходимо чтобы он не пересекался с диапазонами ни в одной внешней сети.
Read the rest of this entry »

Настройка сетевых интерфейсов для разных Unix систем

В данной статье мы рассмотрим как правильно настроить сетевой интерфейс для разных Unix систем.
В качестве примера предположим что у нас есть следующие данные:

IP address : 192.168.10.14, 192.168.10.15
Mask : 255.255.255.0
Gateway : 192.168.10.1
DNS : 192.168.10.3
DNS : 192.168.10.2

Итак приступим:
Для операционной системы FreeBSD:
В конфигурационный файл /etc/rc.conf добавляем:

# Основной адрес
ifconfig_rl0="inet 192.168.10.14 netmask 255.255.255.0"
# Основной Шлюз
defaultrouter="192.168.10.1"
# Алиас
ifconfig_rl0_alias0="inet 192.168.10.15 netmask 255.255.255.0"

rl0 — название сетевого интерфейса который настраиваемого мы настраиваем.

После того как Вы сохранили файл нужно перезагрузить сеть выполнив команду

/etc/rc.d/netif restart
 Read the rest of this entry »

Проверка и оптимизация всех MySQL бд одной командой

Есть хорошая MySQL утилита, называется mysqlcheck, с помощью этой утилиты можно выполнить сразу несколько полезных операций над всеми MySQL базами данных. Команду нужно запускать от суперпользователя root.

Восстановление & Оптимизация

mysqlcheck -Aor

Только ввостановление

mysqlcheck -Ar

Только оптимизация

mysqlcheck -Ao

Описание аргументов:
-A – Проверить на ошибки все Mysql базы данных
-r – Отремонтировать все Mysql базы данных
-o – Оптимизировать все Mysql базы данных

Не ошибитесь в выборе роутера!

Очень важно: если Вы решили купить роутер от АСУСтека, то не совершите ошибки в его выборе, пытаясь сэкономить!

Модели снятые с производства:
НЕ РЕКОМЕНДУЕТСЯ покупать wl500g, wl500b, wl500b v2 из-за проблем в железе!
НЕ РЕКОМЕНДУЕТСЯ покупать wl520g из-за сильной “усечённости” в софте, связанным с маленьким объёмом флеш!
НЕ РЕКОМЕНДУЕТСЯ покупать wl530g, wl330g из-за “дешевизны” WiFi части (собраны на marvel).
РЕКОМЕНДУЕТСЯ к покупке WL500g Deluxe, как наиболее устойчивая модель.
УСЛОВНО РЕКОМЕНДУЕТСЯ к покупке WL550gE, но следует учесть, что в нём нет внешних USB портов

Модели в продаже
УСЛОВНО РЕКОМЕНДУЕТСЯ к покупке WL320gE/WL320gP (наследники WL550gE), но следует учесть, что в них нет внешних USB портов и только один проводной порт
РЕКОМЕНДУЕТСЯ к покупке WL500g Premium, как наиболее гибкая и быстрая модель в этом семействе
РЕКОМЕНДУЕТСЯ к покупке WL500W, как наиболее быстрая модель в этом семействе

Бюджетные модели в продаже:
УСЛОВНО РЕКОМЕНДУЕТСЯ WL520gC: самая простая модель
УСЛОВНО РЕКОМЕНДУЕТСЯ WL520gU: тоже самое с USB портом и принт-сервером
Эти устройства, тем не менее, вполне работоспособны и имеют в настоящий момент поддержку: http://wl500g.info/showthread.php?t=11830. Хороший выбор, если Вам нужно чтобы просто работала сеть, без лишних затрат. По быстродейтсвию устройства уступают WL500gP, WL500W, но выигрывают у большинства сравнимых по цене изделий других компаний, при этом работают стабильно, без “подвисов и перегревов”.

Модифицированная прошивка работает с: WL300g/WL500g/WL500g Deluxe/WL500b/WL500bv2/WLHDD/WL550gE/WL500g Premium/WL500W/WL320GE/GP/WL500GP v2/WL520GU/WL330gE

Табличка с характеристиками железок здесь.

Покупка ASUS WL-500G Premium – V1 vs V2 – какую версию брать?

Pinba – демон для сбора статистики о PHP-скриптах

Документация, исходники и всё остальное доступно на pinba.org.

Кратко о том, что это и для чего это:
Это демон для сбора статистики о выполнении PHP-скриптов. Статистика есть двух видов – общая (скрипт, время, rusage, объем вывода и др.) и данные по таймерам. Таймеры тут один из ключевых моментов, поэтому они достойны отдельного упоминания, см. ниже.
В то же время, это не standalone-демон, данные собираются отдельным тредом в MySQL. При этом функционал MySQL используется для доступа к данным (которые видны пользователю как обычные таблицы, только read only), т.е. для выборок можно использовать обычный SQL.
Статистика не хранится вечно, это просто невозможно, хранится только актуальная статистика (это понятие для всех разное и конечно это настраивается), так что возьмем для примера 1 000 000 последних запросов или 15 минут – т.е. хранятся все запросы за последние 15 минут, но не более миллиона записей. В зависимости от количества таймеров, эти данные могут занимать от 500Mb до нескольких Gb памяти. На диск, конечно, ничего не пишется.

Подробнее о таймерах:
Таймеры нужны для замеров конкретных частей кода. У таймеров есть “таги” для описания и группировки.
Например, есть у вас коннект к базам – оборачиваете его в таймер с тагами “operation”=>”connect”, “db”=>$dbase. В результате мы получаем статистику по одному тагу – “сколько раз в секунду у нас выполняется операция connect и сколько времени она занимает” и по двум – “сколько раз в секунду у нас выполняется операция connect к конкретному серверу и сколько она занимает”.
Тагов и таймеров может быть произвольное количество (но про разум не стоит забывать тоже, всё это доп. нагрузка на сервер).

Несколько примеров использования от Фишера: http://pinba.org/wiki/Manual:Usage_examples
Вся документация: http://pinba.org/wiki/Manual

Если вам интересно и/или есть вопросы/предложения – welcome.

autoconf 2.62 и старые версии FreeBSD

При необходимости установить autoconf версии 2.62 и выше из портов в FreeBSD 5.x или, тем более, 4.x, возникает проблема с texinfo. Например, появляются такие ошибки:

autoconf-2.62.texi:1723: Unknown command `'.
autoconf-2.62.texi:3353: Unknown command `’.

По этой ссылке указано, что надо с этим делать. В общем, надо всего-то добавить пару строк в Makefile и чуть-чуть изменить последнюю строку, и всё соберётся без проблем.

UPDATE: получившийся у меня Makefile

UPDATE2: in case you don’t speak Russian, please, read this the full version of this post.

If you have ‘old’ version of FreeBSD (4-5) and experiencing problems with texinfo while updating autoconf, you should read this link. It tells what you should add to Makefile in order to update autoconf. As a result, this Makefile worked for me.