Несколько слов о SQL оптимизации

admin, 2009-05-20 14:53:07

Как бы это не показалось неожиданным, часто не нужно менять код приложения и SQL запросов в нём, чтобы получить основной прирост производительности. Поделюсь основными практическими рекоммендациями по увеличению скорости работы баз данных на сервере MySQL:

Первый шаг - самый важный:

  1. настройки конфигурации MySQL - увеличьте буфферы используемые базой данных для работы с индексами, ключами и ответами от запросов.
  2. чем больше настроек привилегий - тем медленнее стартует каждый запрос. Быстрее всего работает рут пользователь с полными привилегиями.
  3. Установленный из пакетов MySQL сервер будет работать медленнее, чем если вы скомпилируете его под ваш конкретный сервер. Не используйте те модули сервера, которые вам не нужны.

Второй шаг - настройка баз данных

  1. используйте индексы там, где они могут ускорить запрос. Это самое основное правило ускоряющее работу базы данных при аудите и реинжиниринге её структуры.
  2. Как бы это ни было грустно, проверьте соответствие типов: однажды мы видели VARCHAR в числовых полях. Если диапазон данных мал, и функциональность приложения не меняет его, вместо числового или текстового типа используйте SET/ENUM
  3. Реально оцените диапазон данных и используйте минимальный тип. Для положительных полей укажите опцию UNSIGNED.
  4. помните, поле для MD5 хэшированного пароля - это не VARCHAR(32), а CHAR(32);

Третий шаг - лёгкий реинжиниринг кода.

  1. Используйте триггеры, особенно каскадное удаление и каскадную замену. В коде надо закомментировать, а затем и убрать каскадное удаление.
  2. Если PHP код всегда выполняет операции над строками, отдайте эти операции MySQL, они будут выполнены быстрее.
  3. Для очень частых запросов, надо сформировать вьюшки - они работают быстрее чем таблица или структура, которую они описывают.
  4. Если данные организованы деревом в 2 уровня, надо оценить, хранить их в одной таблице или в двух. Если фреймворк приложения поддерживает маппинг, и модель описана отдельно, то изменения в коде будут минимальны.

Тэги статьи: MySQL оптимизация 

Оптимальные скрипты jQuery

admin, 2009-05-20 12:22:43

Популярный клиентский JS фреймворк jQuery позволил веб-разработчикам сфокусировать своё внимание с кроссбраузерности на юзабилити и функциональности страниц. Кода стало меньше, скорость разработки возрасла.

При разработке проектов с высокой нагрузкой, мы уделяем выходному коду (HTML, JS, CSS) особое внимание, оптимизируя его размер, так как это экономит канал, увеличивая удобство использования и снижая нагрузку на сервер. В одном из проектов нам удалось снизить объём выходного кода более чем в 4 раза.

В этой статье поделюсь некоторыми очевидными приёмами испоьзования jQuery. С помощью них можно не только писать собственные скрипты короче (а значит и понятнее, и быстрее), но и оптимизировать скрипты, которые были добавлены извне. Статья послужила началом болга и будет несомненно расширяться.

вариант до вариант после комментарий
$(...).bind('click', function(){
});
$(...).click(function(){
});
метод bind() сделан для расширения функциональности пользовательскими событиями. Большинство стандартных событий в jQuery уже есть.
$(...).attr('value');
$(...).attr('value', content);
$(...).val();
$(...).val(content);
Тот же пример использования готовых методов.
$.get(url, function(data){
    $(layout).html(data);
});
$(layout).load(url); В jQuery пожалуй самые изящные механизмы вызова ajax, не нужно забывать про них.
$(...).css('display', 'none');
$(...).css('display', 'block');
$(...).hide();
$(...).show();
действие то же, изящность и простота - очевидны.
{'title':$('#title').val(),
'www':$('#www').val(),
'description':$('#description').val()}
{title:$('#title').val(),
www:$('#www').val(),
description:$('#description').val()}
при описании объектов, даже создаваемых "на лету", заключать в кавычки название свойств не обязательно.
$('ul li#' + n);
$('ul li#1').show();
$('ul li').eq(n);
$('ul').first('li').show();
номер тега в контейнере позволит убрать свойство id у каждого элемента. Мы стремимся к постоте кода.
$(this).width(200);
$(this).css('color', '#ff0000');
$(this).show();
$(this).width(200).css('color', '#ff0000').show(); помним про то, что большинство методов возвращает объект.
$(this).css('color', '#ff0000');
$(this).css('border', '1px solid #0000ff');
$(this).css({color : '#ff0000', border : '1px solid #0000ff'}); помним про полиморфизм методов.

Тэги статьи: jQuery оптимизация 

 
  темы блога
все записи4
архитектура по1
программирование2
тестирование0
администрирование1
управление проектами0


  облако тегов


мы рекомендуем VPS хостинг:
VPS Hosting Referral Code D0V2GG
© phpcmf.com | вход для пользователей Rambler's Top100