воскресенье, 5 апреля 2009 г.

MySQL. Выбирайте правильный числовой формат для полей!

При использовании реляционных баз данных всегда особое внимание следует уделять оптимизации структур таблиц базы данных. Это прямо сказывается, в дальнейшем, на скорости работы вашего хранилища в целом, особенно, если объёмы хранимых данных очень большие.

Все типы данных, с которыми работает СУБД MySQL можно разбить на три большие группы: числовые, текстовые и даты-времени. В данной статье хочу рассмотреть именно числовые типы, потому что у многих с ними возникает непонимание.

Числовые типы полей являются неотъемлемой частью любой таблицы базы данных. В MySQL существует 9 числовых типов данных:

  • целочисленные: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT;
  • с плавающей запятой: FLOAT, DOUBLE;
  • с фиксированной запятой: DECIMAL;
  • и другие: BIT, и, возможно, ENUM.‫

Никогда НЕ СТОИТ ИСПОЛЬЗОВАТЬ такие комбинации, если вы не до конца понимаете их назначения и смысла:

- INT(1)‫‏‬
- BIGINT AUTO_INCREMENT
- не использовать UNSIGNED
- DECIMAL(31,0)

INT(1) – 1 не значит, что под хранение этого числа будет выделен один байт. Это глубочайшее заблуждение начинающих разработчиков программного обеспечения. Многие так и будут думать до конца жизни, что это количество байт под размещение этого поля. Но, ведь, это бред, обратитесь к официальному мануалу. Там чётко написано «Int (M)… M indicates the maximum display width for integer types». То есть, это число используется лишь при клиентском выводе числа и означает количество знаков для отображения. В общем, если кому-то интересно, то int(1) и int(11) имеют одинаковую размерность и вообще идентичны, если не использовать ZEROFILL при определении поля (для справки, ZEROFILL - означает, что число будет отображено с ведущими нулями).

Под TINYINT отводится 1 байт для хранения. TINYINT UNSIGNED может хранить числа 0 – 255. BIT –лучше всего использовать когда числа принимают значения 1 или 0. DECIMAL обычно используют для хранения денежных значений.

И никогда не стоит юзать BIGINT с AUTO_INCREMENT, это же зло. Возьмите INT UNSIGNED, он уже может вмещать ~4,3 миллиарда значений. При таком количестве записей в миллиарды в одной таблице, уже стоит серьёзно задуматься о том, чтобы разделить эти данные на несколько других таблиц. BIGINT используется для других целей, например, для суммирования больших значений.

Вообще хорошая практика – всегда использовать UNSIGNED поле для числовых значений, если нет видимой причины для использования отрицательных значений.

Надеюсь, программеры возьмут мои замечания на заметку. Сделаем код лучше!

Утилита Site-Auditor – сбор данных о видимости сайта в поисковиках

По наводке друзей набрёл на интересную программу, при помощи которой можно легко собрать основные данные о текущем уровне оптимизации сайта. Имя ей Site-Auditor (домашний адрес: www.site-auditor.ru).

Утилита Site-Auditor позволят всего одним «мышедвижением» получить все необходимые данные из основных поисковых систем не только рунета, но и популярных поисковиков Google, Yahoo и MSN. Внешний вид окна программы приведен ниже.

На момент написания этого поста, на сайте была доступна версия 1.68. Одним из достоинств программы является её кроссплатформенность, так как написана она с применением технологии Flash. Всё что вам нужно – это иметь установленный flash player версии 8.0 или выше, и она будет одинаково работать как в Windows ОС, так и для MAC OS X и Linux систем.

Весь функционал утилиты сгруппирован по трём вкладкам: Экспресс-анализ, Подбор запросов и Видимость сайта.

В первом разделе собраны основные данные о текущем уровне оптимизации сайта. Среди них индексы цитирования, количество проиндексированных страниц, количество ссылок на этот сайт и многое другое. Кроме того, если на сайте будет обнаружен счетчик Рамблер Top100, утилита соберет данные о количестве посетителей и просмотренных страниц за последние 7 дней. Также умеет сможет распознать и счетчики ряда других статистических систем, о которых можно почитать на официальном сайте. Путём клика на выпадающем меню «Внешние сервисы» можно пользоваться рядом полезных инструментов, таких как WHOIS, Traceroute (RU) и Traceroute (COM), WayBack Machine и другими. Каждый раз, когда вы будете получать новые данные об уровне оптимизации сайта, программа будет сохранять их в истории запросов. Так открывается возможность наглядного просмотра данных во временной шкале и отслеживания тенденций развития сайта.

Сервис «Подбор запросов» позволяет составить семантическое ядро для исследуемых сайтов. Проще говоря, получить список поисковых запросов, которые пользователи задавали в поисковом сервисе Рамблер в течение прошедшего месяца и которые содержат слова, указанные в поле "Проверить запросы".

Вкладка "Видимость сайта" позволяет получить суммарный отчет о положении анализируемого сайта в результатах поиска Google, Яндекса и Рамблера.

Надеюсь, этого краткого обзора хватит, чтобы вас заинтересовать, так как мне утилита Site-Auditor очень понравилась, в частности, из-за количества различных опций и сервисов, а так же наглядных отчётов собранных в одном месте. Единственное, что следовало бы улучшить разработчикам данного программного чуда – это убыстрить работу, например, путём параллельного послания нескольких запросов на серверы поисковиков, а не последовательно на каждый из них по каждому из параметров, как сделано сейчас.

Рекоммендую

Попробуйте надёжный хостинг от Scala Hosting