Несколько слов о SQL оптимизации admin, 2009-05-20 14:53:07 Как бы это не показалось неожиданным, часто не нужно менять код приложения и SQL запросов в нём, чтобы получить основной прирост производительности. Поделюсь основными практическими рекоммендациями по увеличению скорости работы баз данных на сервере MySQL:
Первый шаг - самый важный:
- настройки конфигурации MySQL - увеличьте буфферы используемые базой данных для работы с индексами, ключами и ответами от запросов.
- чем больше настроек привилегий - тем медленнее стартует каждый запрос. Быстрее всего работает рут пользователь с полными привилегиями.
- Установленный из пакетов MySQL сервер будет работать медленнее, чем если вы скомпилируете его под ваш конкретный сервер. Не используйте те модули сервера, которые вам не нужны.
Второй шаг - настройка баз данных
- используйте индексы там, где они могут ускорить запрос. Это самое основное правило ускоряющее работу базы данных при аудите и реинжиниринге её структуры.
- Как бы это ни было грустно, проверьте соответствие типов: однажды мы видели VARCHAR в числовых полях. Если диапазон данных мал, и функциональность приложения не меняет его, вместо числового или текстового типа используйте SET/ENUM
- Реально оцените диапазон данных и используйте минимальный тип. Для положительных полей укажите опцию UNSIGNED.
- помните, поле для MD5 хэшированного пароля - это не VARCHAR(32), а CHAR(32);
Третий шаг - лёгкий реинжиниринг кода.
- Используйте триггеры, особенно каскадное удаление и каскадную замену. В коде надо закомментировать, а затем и убрать каскадное удаление.
- Если PHP код всегда выполняет операции над строками, отдайте эти операции MySQL, они будут выполнены быстрее.
- Для очень частых запросов, надо сформировать вьюшки - они работают быстрее чем таблица или структура, которую они описывают.
- Если данные организованы деревом в 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 оптимизация
| |
мы рекомендуем VPS хостинг: |