1. Elección de SqlDataRead y conjunto de datos Ventajas de Sqldataread: La lectura de datos es muy rápida. Si los datos devueltos no requieren mucho procesamiento, se recomienda utilizar SqlDataReader, cuyo rendimiento es mucho mejor que datset. Desventajas: la conexión a la base de datos no se puede cerrar hasta que se lean los datos
(SqlDataReader lee los datos en una dirección de avance rápido. La clase SqlDataReader proporciona una forma de leer el flujo de datos de solo avance recuperado de la base de datos de SQL Server. Utiliza SQL Server El formato de transmisión de datos de la red nativa lee datos directamente desde la conexión de la base de datos. DataReader debe cerrarse explícitamente a tiempo para liberar la conexión de datos a tiempo).
El conjunto de datos lee los datos y los almacena en caché en la memoria. Desventajas: alto uso de memoria. Si necesita procesar mucho los datos devueltos, es mejor utilizar Dataset para reducir las operaciones de conexión a la base de datos. Ventajas: solo necesita conectarse una vez para cerrar la conexión a la base de datos
. En general, si desea leer una gran cantidad de datos y no procesar mucho los datos devueltos, use SqlDataReader para una gran cantidad. Al procesar los datos devueltos, es más apropiado utilizar datset. La elección de SqlDataReader y Dataset depende de la realización de las funciones del programa.
2. ExecuteNonQuery y ExecuteScalar
no necesitan devolver un conjunto de resultados al actualizar los datos. Se recomienda utilizar ExecuteNonQuery. Dado que no se devuelve ningún conjunto de resultados, se puede omitir la transmisión de datos de la red. Simplemente devuelve el número de filas afectadas. Si solo necesita actualizar datos, la sobrecarga de rendimiento de ExecuteNonQuery es relativamente pequeña.
ExecuteScalar devuelve solo la primera columna de la primera fila del conjunto de resultados. Utilice el método ExecuteScalar para recuperar un valor único (como un número de identificación) de la base de datos. Esta operación requiere menos código que usar el método ExecuteReader para realizar las operaciones necesarias para generar un valor único en los datos devueltos.
* Simplemente actualice los datos usando ExecuteNonQuery. La consulta de un solo valor usa la opción de enlace de datos ExecuteScalar
3. Enlace de datos
Método de enlace general de DataBinder <%# DataBinder.Eval(Container.DataItem, "field name") %> usa DataBinder.eval El enlace No le importa la fuente de datos (lectura de datos o conjunto de datos). No tiene que preocuparse por el tipo de datos que eval convertirá este objeto de datos en una cadena. Se trabajó mucho en el enlace subyacente, utilizando capacidades de reflexión. El hecho de que sea cómodo de usar afecta el rendimiento de los datos. Echemos un vistazo a <%# DataBinder.Eval(Container.DataItem, "nombre de campo") %>. Cuando está vinculado a un conjunto de datos, DataItem es en realidad un DataRowView (si está vinculado a un lector de datos (lectura de datos), es un IdataRecord). Por lo tanto, convertirlo directamente a un DataRowView mejorará en gran medida el rendimiento.
<%# ctype(Container.DataItem,DataRowView).Row("nombre de campo") %>
*Se recomienda utilizar <%# ctype(Container.DataItem,DataRowView).Row("nombre de campo") %> para los datos vinculante. . Cuando la cantidad de datos es grande, la velocidad se puede aumentar cientos de veces. Preste atención a dos aspectos al usarlo: 1. Debe agregar <%@ Import namespace="System.Data"%> a la página 2. Preste atención al caso del nombre del campo (preste especial atención). Si no coincide con la consulta, en algunos casos será más lento que <%# DataBinder.Eval(Container.DataItem, "field name") %>. Si desea mejorar aún más la velocidad, puede utilizar el método <%# ctype(Container.DataItem,DataRowView).Row(0) %>. Sin embargo, su legibilidad no es alta.
Lo anterior es el método de escritura de vb.net. En c#: <@% ((DataRowView)Container.DataItem)["field name"] %>
La forma más sencilla de ver el estado de cada proceso de ejecución en la página: puede ver los detalles si el atributo de seguimiento de la página es verdadero.
1. Utilice procedimientos almacenados:
1. Rendimiento: los procedimientos almacenados proporcionan muchas funciones avanzadas que no se encuentran en el lenguaje SQL estándar. Su capacidad para pasar parámetros y ejecutar expresiones lógicas ayuda a los diseñadores de aplicaciones a manejar tareas complejas. Además, el procedimiento almacenado se almacena en el servidor local, lo que reduce el ancho de banda de transmisión de la red y el tiempo de ejecución requerido para ejecutar el procedimiento. (El procedimiento almacenado ha precompilado la declaración SQL, por lo que su velocidad de ejecución es mucho más rápida que ejecutar la declaración SQL en el programa)
2. Estructura del programa: desde la perspectiva de la escalabilidad del programa, el uso de procedimientos almacenados afectará las modificaciones futuras del programa. por conveniencia. Por ejemplo, si cambia la estructura de la base de datos, solo necesita modificar la estructura de almacenamiento correspondiente y la parte de llamada del programa. Esta parte no está dentro del alcance de este artículo y pertenece al diseño de la estructura del programa. Así que no lo ampliaré aquí.
3. Seguridad del programa: los ataques de inyección SQL se pueden evitar mediante el uso de procedimientos almacenados.
2. Optimización de declaraciones de consulta (para SQL Server2000)
Muchas personas escriben declaraciones SQL solo para ese propósito, sin considerar la eficiencia de ejecución de las declaraciones SQL. Aquí solo proporciono un método para optimizar el orden de las tablas (la optimización y los principios de las declaraciones SQL se analizarán en mis notas de estudio de SQL Server2000).
Para la eficiencia de ejecución de las declaraciones SQL, puede utilizar el analizador de consultas de SQL Server2000. ver el proceso de ejecución de las declaraciones.
Optimice el orden de las tablas: en circunstancias normales, sqlserver optimizará automáticamente las conexiones de las tablas. Por ejemplo: seleccione nombre, no de A únase a B en A. id=B.id únase a C en C.id=A.id donde nombre='wang'Aunque
la tabla A aparece primero en Desde, luego en B y finalmente es c. Pero el servidor SQL puede usar la tabla c primero. Su principio de selección es limitar la consulta a una o varias filas, de modo que se pueda reducir la cantidad total de datos buscados en otras tablas. En la mayoría de los casos, SQL Server tomará la decisión óptima, pero si descubre que una consulta de combinación compleja es más lenta de lo esperado, puede usar la instrucción SET FORCEPLAN para forzar a SQL Server a usar las tablas en el orden en que aparecen. Como en el ejemplo anterior, agregue: SET FORCEPLAN ON.......SET FORCEPLAN OFF. El orden de ejecución de la tabla se ejecutará en el orden que escribió. Vea las 2 eficiencias de ejecución en Query Analyzer para elegir el orden en que se unen las tablas.
* Utilice SET FORCEPLAN para seleccionar la secuencia de conexión de la tabla
. 3. La optimización de la página (.aspx)
se centra principalmente en varios atributos de la página.
1. EnableViewState (el estado de visualización de la página). Se establece en falso si no hay requisitos especiales. Con ViewState, cada objeto debe primero serializarse en ViewState y luego deserializarse mediante devolución de datos, por lo que no hay ningún costo por usar ViewState. Utilice la menor cantidad de objetos posible y, si es posible, reduzca la cantidad de objetos que coloca en ViewState. Viewstate básicamente se puede desactivar en las siguientes situaciones:
(1) Control de página (.ascx)
(2) La página no se devuelve a sí misma.
(3) No se requiere procesamiento de eventos para los controles.
(4) El control no tiene valores de propiedad dinámicos o vinculados a datos (o se maneja en código para cada paquete posterior)
Deshabilite ViewState para una sola página o para cada página, de la siguiente manera: Página única: <%@ Page EnableViewState=" False" %> Cada página: En web.config <Pages EnableViewState="false" /> EnableSessionState puede mantener el valor predeterminado (solo ocupará recursos si la página usa sessionstate). EnableViewStateMac Si no hay requisitos de seguridad especiales, mantenga el valor predeterminado.
2. Diseño de página. Se recomienda utilizar Flowlayout (los elementos se agregan sin atributos de posicionamiento absoluto). Gridlayout (atributos de posicionamiento absoluto) producirá más código que Flowlayout debido al uso de posicionamiento absoluto, principalmente la información de posicionamiento del control.
3. Al publicar el proyecto, recuerde liberar el estado de depuración de la página.
4. Optimización del lenguaje HTML. Mi sugerencia es dominar HTML/JavaScript y utilizar menos código generado automáticamente por vs.net2003. Generará automáticamente algún código html inútil.
5. Configurar la navegación inteligente en verdadero puede mejorar significativamente el rendimiento del usuario. Habilitar esta propiedad tiene poco impacto en el cliente y el servidor. Puede actualizar de forma inteligente las partes que necesitan actualizarse.
4. Selección de controles:
Elección de controles HTML y controles de servidor. La conveniencia y la realización funcional que brindan los controles del servidor no tienen comparación con los controles HTML. Pero se obtiene a expensas de los recursos del lado del servidor. Mi sugerencia personal: si el control html no puede lograr las funciones que desea lograr y no se puede lograr cuando se combina con algunos lenguajes de secuencias de comandos (como javascrpt/vbscript). Sólo entonces se seleccionará el control del servidor. Después de seleccionar el control del servidor, intente optimizar su control, como cancelar algunos estados de la página, etc. (consulte específicamente la optimización del control
Selección de controles del servidor: explique principalmente varios controles de datos comunes:
DataGrid: viene con el más potente
).visualización de datos El control tiene incorporadas muchas funciones prácticas, como modificar, eliminar, agregar y paginar datos. Si solo necesita mostrar datos, intente no elegir DataGrid (almacena todos los datos en estado de vista). Tampoco utilice la función de paginación incorporada. Microsoft ha trabajado mucho en la capa inferior de paginación automática. es conveniente de usar, la sobrecarga de rendimiento es enorme.
DataList: Tiene muchas menos funciones que DataGrid. Pero es mucho más personalizable. La exclusiva visualización de datos de múltiples líneas nos brinda mucha comodidad. Básicamente, puede implementar las funciones que puede lograr DataGrid. Por eso se recomienda su uso.
Repetidor: El menos funcional, pero muy personalizable. Se recomienda usarlo si solo necesita mostrar datos. Debido a la reducción de muchas funciones, el consumo de rendimiento del servidor es mínimo. Por lo tanto, si es para mostrar datos, básicamente elijo Repetidor, luego DataList y finalmente DataGrid
* intento elegir el control html. Las funciones que se pueden implementar en el cliente se implementan en el cliente (competencia en javascript), lo que reduce la presión sobre el servidor. Secuencia de selección de control de datos: Repetidor, DataList, DataGrid
5. Optimización de los controles del servidor:
1.
El estado de vista del control Viewstate es básicamente el mismo que el estado de vista de la página. Se utiliza para guardar algunos estados del control. El principio de procesamiento es el mismo que el de procesar el estado de visualización de la página. Si está interesado, puede usar Datagrid para vincular datos y probar la cantidad de datos guardados por viewstate. Los datos que guarda son básicamente los mismos que los que muestra Datagrid.
2. Ispostpack
tiene el valor predeterminado falso. Debe establecerse en verdadero cuando es necesario generar un evento.
La optimización del control depende principalmente de su familiaridad con este control. Cuanto mejor comprenda el funcionamiento interno de un control, mejor podrá optimizarlo adecuadamente.
La optimización del rendimiento no se puede explicar en unas pocas frases. Lo que he escrito es solo la punta del iceberg. La optimización del rendimiento se basa en la acumulación de experiencia diaria y la comprensión continua de los principios operativos del programa.
6. Problemas de excepciones
No es necesario utilizar excepciones para problemas generales, como problemas en los que el usuario no existe en el foro, la contraseña del usuario es incorrecta, etc., porque crear una instancia de una excepción requiere muchos recursos y requiere completar la información de la excepción (tipo de excepción, ubicación de la excepción donde se lanza la excepción), etc.), por supuesto, no es para evitar el uso de excepciones, sino para manejar las excepciones necesarias. El principio para las excepciones es: no las use si puede. y no genere sus propias excepciones si puede utilizar las excepciones existentes en el sistema.