Наиболее эффективное соединение ADODB для IIS 7, Microsoft Access и Classic ASP - PullRequest
0 голосов
/ 19 ноября 2011

Я управляю сайтом интрасети, написанным на классическом ASP, работающим в IIS7 на Windows Server 2008, и использую Microsoft Access в качестве хранилища данных (переключение на более функциональную базу данных не вариант, а также переход на .NET).

Каждая страница выполняет несколько обращений к хранилищу данных для заполнения различных представлений и т. Д.

По мере роста трафика на сайт у нас возникают проблемы со временем отклика страницы, и одна из возможных причин заключается в эффективности соединений с хранилищем данных.

Какой тип соединения ADO наиболее эффективен для настройки этого типа?

Ответы [ 2 ]

1 голос
/ 19 ноября 2011

У нас была похожая проблема с несколькими нашими сайтами. Весь контент был базой данных. Мы использовали SQL Server и сделали как можно меньше обращений к базе данных при отображении веб-страниц. Мы стали беспокоиться о том, что сайты с интенсивным использованием постоянно попали в базу данных, и внесли некоторые изменения в то, как наши сайты создавались в будущем.

Мы заменили около 70% контента, управляемого базой данных, статическими включаемыми файлами. Мы разделили данные контента сайта на три группы.

  1. Статический контент, который не изменился
  2. Полустатическое содержимое, которое редко меняется
  3. Содержимое базы данных

Мы заменили статический контент включаемыми файлами. Если клиент хотел изменения, нам сказали, что мы внесли изменения (за плату).

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

0 голосов
/ 22 ноября 2011

Я не уверен, что вы можете получить производительность от использования различных типов ADO.Я думаю, что это больше связано с размером и структурой базы данных.

У меня были подобные проблемы с вашим приложением.Хотя я создал много-много приложений для моих клиентов, не многие из них имели огромную аудиторию.Недавно я построил одну, и мне нужно было выучить одну или две вещи, чтобы она была эффективной.

Вот несколько вещей, на которые стоит обратить внимание, если вы еще этого не сделали.Некоторые из них могут быть немного базовыми для вас, но полезными и для других:

1) INDEX или FULLTEXT INDEX - Чтобы ускорить мою базу данных, я добавил INDEX в столбцы, которые я запрашиваю, что ускоряетмои запросы огромное количество (но немного замедляет вставку).Я также добавил FULLTEXT INDEX в столбцы, где я искал несколько слов, чтобы я мог потерять ужасно медленные предложения LIKE / IN.

2) Нормализация или денормировка - Один из моихзапросы искали 16 таблиц, используя соединения и подзапросы, и оказались медленными, громоздкими и запутанными.Я исправил это, создав «ненормализованную» таблицу, которая содержала все полезные данные из этих 16 таблиц, которые мне были нужны для поиска.Таким образом, с помощью FULLTEXT INDEX и ненормализованной и проиндексированной таблицы мой запрос длиной всего несколько строк выполняется на удивление быстро.Перед использованием ненормализованных таблиц вы должны сначала понять нормализованные таблицы.Для меня это была правильная ситуация, когда вы можете нарушать правила.

3) Выбор поля SQL - Выберите только те поля, которые требуются в вашем запросе SQL.Это простая ошибка, но все же можно сделать.Например, не делайте (выберите * из myTable), если вам не нужны все возвращаемые столбцы, сделайте что-то более точное, например (выберите id, fname из myTable), если это единственные столбцы, которые вам нужны.

4) Очистка БД - я не уверен насчет Access, но в MYSQL вы можете очистить вашу БД с помощью запроса OPTIMIZE, который исправляет любые пробелы в вашей БД, иногда создаваемые путем вставки и удаления большого количестваданные часто.Вы также можете использовать EXPLAIN, который подробно объясняет ваш запрос, такой как таймер, используемые индексы, используемые строки и возвращаемые записи.

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

...