1. Выбор SqlDataRead и набора данных. Преимущества Sqldataread: Чтение данных происходит очень быстро. Если возвращаемые данные не требуют большой обработки, рекомендуется использовать SqlDataReader, производительность которого намного выше, чем у datset. Недостатки: соединение с базой данных не может быть закрыто до тех пор, пока данные не будут прочитаны
(SqlDataReader считывает данные в ускоренном направлении. Класс SqlDataReader предоставляет способ чтения потока данных только в прямом направлении, полученного из базы данных SQL Server. Он использует SQL Server Собственный формат передачи данных по сети считывает данные непосредственно из соединения с базой данных. DataReader необходимо вовремя закрыть, чтобы вовремя освободить соединение для передачи данных.)
Набор данных считывает данные и кэширует их в памяти. Недостатки: Большое использование памяти. Если вам нужно выполнить большую обработку возвращаемых данных, лучше использовать Dataset, чтобы сократить количество операций подключения к базе данных. Преимущества: вам нужно подключиться только один раз, чтобы закрыть соединение с базой данных
. В общем, если вы хотите прочитать большой объем данных и не выполнять большую обработку возвращаемых данных, используйте SqlDataReader для большого объема. при обработке возвращаемых данных более целесообразно использовать datset. Выбор SqlDataReader и Dataset зависит от реализации программных функций.
2. ExecuteNonQuery и ExecuteScalar
не должны возвращать набор результатов при обновлении данных. Рекомендуется использовать ExecuteNonQuery. Поскольку набор результатов не возвращается, передачу сетевых данных можно опустить. Он просто возвращает количество затронутых строк. Если вам нужно только обновить данные, затраты на производительность ExecuteNonQuery относительно невелики.
ExecuteScalar возвращает только первый столбец первой строки в наборе результатов. Используйте метод ExecuteScalar для получения одного значения (например, идентификационного номера) из базы данных. Эта операция требует меньше кода, чем использование метода ExecuteReader для выполнения операций, необходимых для создания одного значения на возвращаемых данных.
* Просто обновите данные с помощью ExecuteNonQuery. Запрос одного значения использует вариант привязки данных ExecuteScalar
3. Привязка данных
Общий метод привязки DataBinder <%# DataBinder.Eval(Container.DataItem, «имя поля») %> используйте DataBinder.eval Привязка не заботится об источнике данных (Dataread или набор данных). Вам не нужно беспокоиться о типе данных. eval преобразует этот объект данных в строку. Большая работа была проделана над базовой привязкой с использованием возможностей отражения. Просто потому, что его удобно использовать, это влияет на производительность данных. Давайте посмотрим на <%# DataBinder.Eval(Container.DataItem, «имя поля») %>. При привязке к набору данных DataItem фактически является DataRowView (если он привязан к устройству чтения данных (dataread), это IdataRecord). Поэтому непосредственное преобразование его в DataRowView значительно повысит производительность.
<%# ctype(Container.DataItem,DataRowView).Row("имя поля") %>
*Рекомендуется использовать <%# ctype(Container.DataItem,DataRowView).Row("имя поля") %> для данных привязка. Когда объем данных велик, скорость можно увеличить в сотни раз. При его использовании обратите внимание на два аспекта: 1. Вам необходимо добавить на страницу <%@ Import namespace="System.Data"%> 2. Обратите внимание на регистр имени поля (обратите особое внимание). Если он несовместим с запросом, в некоторых случаях он будет медленнее, чем <%# DataBinder.Eval(Container.DataItem, "имя поля") %>. Если вы хотите еще больше повысить скорость, вы можете использовать метод <%# ctype(Container.DataItem,DataRowView).Row(0) %>. Однако читаемость его не высока.
Выше приведен метод записи vb.net. В С#: <@% ((DataRowView)Container.DataItem)["имя поля"] %>
Самый простой способ просмотреть состояние каждого процесса выполнения на странице: вы можете просмотреть подробности, если атрибут трассировки страницы равен истинный.
1. Используйте хранимые процедуры:
1. Производительность. Хранимые процедуры предоставляют множество расширенных функций, которых нет в стандартном языке SQL. Его способность передавать параметры и выполнять логические выражения помогает разработчикам приложений решать сложные задачи. Кроме того, хранимая процедура хранится на локальном сервере, что снижает пропускную способность сети и время выполнения, необходимое для выполнения процедуры. (Хранимая процедура предварительно скомпилировала оператор sql, поэтому скорость ее выполнения намного выше, чем выполнение оператора sql в программе)
2. Структура программы: с точки зрения масштабируемости программы использование хранимых процедур повлияет на будущие модификации программы. для удобства. Например, если изменится структура базы данных, вам нужно будет изменить только соответствующую структуру хранилища и вызывающую часть программы. Эта часть выходит за рамки данной статьи и относится к проектированию структуры программы. Поэтому я не буду здесь распространяться об этом.
3. Безопасность программы: атак SQL-инъекций можно избежать, используя хранимые процедуры.
2. Оптимизация операторов запроса (для sql server2000)
Многие люди пишут операторы sql только для этой цели, не учитывая эффективность выполнения оператора sql. Здесь я предлагаю только метод оптимизации порядка таблиц (Оптимизация и принципы операторов SQL будут обсуждаться в моих заметках по изучению SQL Server2000.)
Для повышения эффективности выполнения операторов SQL вы можете использовать анализатор запросов SQL Server2000. просмотреть процесс выполнения операторов.
Оптимизировать порядок таблиц. В обычных обстоятельствах sqlserver автоматически оптимизирует соединения таблиц. Например: выберите имя, нет из A, присоединитесь к B к A. id=B.id присоединитесь к C к C.id=A.id, где name='wang'Хотя
таблица A указана первой в поле From, затем B и, наконец, Это С. Но сервер sql может сначала использовать таблицу c. Принцип его выбора заключается в ограничении запроса одной строкой или несколькими строками, чтобы можно было уменьшить общий объем данных, искомых в других таблицах. В большинстве случаев SQL Server сделает оптимальный выбор, но если вы обнаружите, что сложный запрос соединения выполняется медленнее, чем ожидалось, вы можете использовать оператор SET FORCEPLAN, чтобы заставить SQL Server использовать таблицы в том порядке, в котором они появляются. Как и в приведенном выше примере, добавьте: SET FORCEPLAN ON.......SET FORCEPLAN OFF Порядок выполнения таблицы будет выполняться в указанном вами порядке. Просмотрите два показателя эффективности выполнения в анализаторе запросов, чтобы выбрать порядок объединения таблиц.
* Используйте SET FORCEPLAN, чтобы выбрать последовательность подключения таблицы
. 3. Оптимизация страницы (.aspx)
в основном фокусируется на нескольких атрибутах страницы.
1. EnableViewState (состояние просмотра страницы). Установите значение false, если нет особых требований. При использовании ViewState каждый объект необходимо сначала сериализовать во ViewState, а затем десериализовать посредством обратной передачи, поэтому использование ViewState не требует затрат. Используйте как можно меньше объектов и, если возможно, уменьшите количество объектов, помещаемых в ViewState. Viewstate можно отключить в следующих ситуациях:
(1) Управление страницами (.ascx).
(2) Страница не возвращается сама себе.
(3) Никакой обработки событий для элементов управления не требуется.
(4) Элемент управления не имеет значений динамических или привязанных к данным свойств (или обрабатывается в коде для каждого почтового пакета).
Отключите ViewState для одной страницы или для каждой страницы следующим образом: Одна страница: <%@ Page EnableViewState=" False" %> Каждая страница: В web.config <Pages EnableViewState="false" /> EnableSessionState может сохранять значение по умолчанию (оно будет занимать ресурсы только в том случае, если страница использует состояние сеанса). EnableViewStateMac Если нет особых требований к безопасности, сохраните значение по умолчанию.
2. Модель макета страницы. Рекомендуется использовать Flowlayout (элементы добавляются без атрибутов абсолютного позиционирования). Gridlayout (атрибуты абсолютного позиционирования) будет создавать больше кода, чем Flowlayout, из-за использования абсолютного позиционирования, в основном информации о позиционировании элемента управления.
3. При выпуске проекта не забудьте снять статус отладки страницы.
4. Оптимизация языка HTML. Я предлагаю хорошо разбираться в Html/JavaScript и использовать меньше кода, автоматически сгенерированного vs.net2003. Он автоматически сгенерирует бесполезный HTML-код.
5. Установка значения true для интеллектуальной навигации может значительно повысить производительность пользователя. Включение этого свойства мало влияет на клиент и сервер. Оно позволяет разумно обновлять части, которые необходимо обновить.
4. Выбор элементов управления:
Выбор HTML-элементов управления и серверных элементов управления. Удобство и функциональная реализация серверных элементов управления не имеют себе равных с элементами управления HTML. Но это достигается за счет ресурсов серверной части. Мое личное предложение: если элемент управления html не может достичь тех функций, которые он хочет достичь, и его невозможно достичь в сочетании с некоторыми языками сценариев (например, javascrpt/vbscript). Только тогда будет выбран серверный элемент управления. После выбора серверного элемента управления попытайтесь оптимизировать его управление, например, отменить некоторые состояния страниц и т. д. (см. в частности, оптимизацию серверного элемента управления
: в основном объясняются некоторые распространенные элементы управления данными:
DataGrid: поставляется с наиболее мощными
).отображение данных. В элемент управления встроено множество практических функций, таких как изменение, удаление, добавление и разбиение по страницам данных. Если вам нужно только отображать данные, старайтесь не выбирать DataGrid (он хранит все данные в состоянии просмотра). Также не используйте встроенную функцию разбивки по страницам. Хотя она проделала большую работу. удобен в использовании, затраты на производительность огромны.
DataList: у него гораздо меньше функций, чем у DataGrid. Но это гораздо более настраиваемо. Уникальный многострочный дисплей данных приносит нам большое удобство. Он может в основном реализовывать функции, которые может реализовать DataGrid. Поэтому рекомендуется использовать его.
Повторитель: Наименее функциональный, но очень настраиваемый. Рекомендуется использовать его, если вам нужно только отобразить данные. За счет сокращения многих функций потребление производительности сервера минимально. Поэтому, если нужно отображать данные, я в основном выбираю Repeater, затем DataList и, наконец, DataGrid
* пытаюсь выбрать элемент управления html. Функции, которые можно реализовать на клиенте, реализуются на клиенте (владеющем javascript), что снижает нагрузку на сервер. Последовательность выбора элементов управления данными: Повторитель, DataList, DataGrid
5. Оптимизация серверных элементов управления:
1.
Состояние просмотра элемента управления Viewstate в основном такое же, как состояние просмотра страницы. Используется для сохранения некоторых состояний элемента управления. Принцип обработки такой же, как и обработка состояния просмотра страницы. Если вам интересно, вы можете использовать Datagrid для привязки данных и проверки объема данных, сохраняемых с помощью viewstate. Данные, которые он сохраняет, в основном такие же, как и объем данных, отображаемых Datagrid.
2. По умолчанию Ispostpack
имеет значение false. Если необходимо сгенерировать событие, ему необходимо установить значение true.
Оптимизация элемента управления в основном зависит от вашего знакомства с этим элементом управления. Чем лучше вы понимаете внутреннюю работу элемента управления, тем лучше вы сможете оптимизировать его соответствующим образом.
Оптимизацию производительности невозможно объяснить в нескольких предложениях. То, что я написал, — это лишь верхушка айсберга. Оптимизация производительности опирается на накопление ежедневного опыта и постоянное понимание принципов работы программы.
6. Проблемы с исключениями.
Нет необходимости использовать исключения для общих проблем, таких как проблемы, когда пользователь не существует на форуме, неверный пароль пользователя и т. д., поскольку создание экземпляра исключения требует много ресурсов и требует заполнения информацию об исключении (тип исключения, место возникновения исключения) и т. д.), конечно, это не для того, чтобы избежать использования исключений, а для обработки необходимых исключений. Принцип исключений таков: не используйте их, если можете. и не создавайте свои собственные исключения, если вы можете использовать существующие исключения в системе.