Mantener las tablas de datos de SQL Server en la memoria es una función proporcionada por SQL Server, que rara vez participa en el proceso de desarrollo de sistemas pequeños generales. Aquí se compilan documentos relacionados para demostrar cómo poner todos los datos de una tabla en SQL Server en la memoria para implementar una base de datos en memoria y mejorar el rendimiento en tiempo real.
1, DBCC PINTABLE
Marca unatabla
para fijarla, lo que significa que Microsoft SQL Server no borra las páginas de la tabla de la memoria.
DBCC PINTABLE (id_base de datos, id_tabla)
Para determinar el ID de la base de datos, utilice la función DB_ID.
Para determinar el ID de la tabla, utilice la función OBJECT_ID.
Comentar
DBCC PINTABLE no hace que la tabla se lea en la memoria. Cuando las páginas de una tabla se leen en la memoria caché mediante instrucciones Transact-SQL ordinarias, se marcan como páginas residentes en memoria. Las páginas residentes en la memoria no se borran cuando SQL Server necesita espacio para leer páginas nuevas. SQL Server aún registra las actualizaciones de la página y, si es necesario, escribe la página actualizada en el disco. Sin embargo, SQL Server mantiene una copia de las páginas disponibles en la caché hasta que la tabla se convierte en no residente mediante la instrucción DBCC UNPINTABLE.
DBCC PINTABLE se utiliza mejor para mantener en la memoria tablas pequeñas a las que se hace referencia con frecuencia. Lea las páginas de la tabla pequeña en la memoria de una vez y no será necesario leer todas las referencias futuras a sus datos desde el disco.
NOTA DBCC PINTABLE puede proporcionar mejoras de rendimiento, pero debe usarse con precaución. Si reside una tabla grande, la tabla inicialmente utiliza una gran parte del caché sin dejar suficiente caché para otras tablas del sistema. Si la tabla alojada es mayor que el caché, la tabla llena todo el caché. Un miembro de la función fija de servidor sysadmin debe cerrar y reiniciar SQL Server y luego hacer que la tabla no sea residente. Alojar demasiadas tablas crea el mismo problema que alojar tablas que son más grandes que la memoria caché.
Ejemplo:
Declarar @db_id int, @tbl_id int
Usar DATABASE_NAME
Establecer @db_id = DB_ID('DATABASE_NAME')
Establecer @tbl_id = Object_ID('Departamento')
DBCC pintable (@db_id, @tbl_id)
puede configurar la tabla Departamento para que sea memoria- residente .
Declare @db_id int, @tbl_id int
Use DATABASE_NAME
Set @db_id = DB_ID('DATABASE_NAME')
Set @tbl_id = Object_ID('Department')
DBCC UNpintable (@db_id, @tbl_id)
puede desarmar la tabla Departamento como residente en memoria.
Puede utilizar el siguiente comando SQL para detectar la ejecución:
Seleccione ObjectProperty(Object_ID('Department'),'TableIsPinned')
Si el resultado devuelto es 1: significa que la tabla se ha configurado para residir en la memoria: significa 0; que no se ha configurado para residir en la memoria Reservar memoria.
2, SP_TableOption
Establece valores de opción paratablas
definidas por el usuario. sp_tableoption se puede utilizar para activar la función de texto en fila en tablas con columnas de texto, ntext o imagen.
sp_tableoption [ @TableNamePattern = ] 'tabla'
, [ @OptionName = ] 'nombre_opción'
, [ @OptionValue = ] 'valor'
donde 'nombre_opción' tiene el siguiente uso:
pintable: cuando está deshabilitado (el valor predeterminado), marca la tabla como ya no residente en RAM. Cuando está habilitado, marca la tabla como residente en RAM. (La tabla especificada puede residir en la memoria)
Además, el bloqueo de la tabla en carga masiva, el bloqueo de inserción de fila, el texto en la fila y otros valores opcionales no involucran la tabla residente en la memoria. Para un uso específico, puede consultar los libros de SQL Server. En línea
Valor Tiene el siguiente uso:
el nombre_opción está habilitado (verdadero, activado o 1) o deshabilitado (falso, desactivado o 0).
Ejemplo:
EXEC sp_tableoption 'Department','pintable', 'true'
hará que la tabla de datos Departamento resida en la memoria.
EXEC sp_tableoption 'Department','pintable', 'false'
cancelará la tabla de datos Departamento que reside en la memoria. .
Puede utilizar el siguiente comando SQL para detectar la ejecución:
Seleccione ObjectProperty(Object_ID('Department'),'TableIsPinned')
Si el resultado devuelto es 1: significa que la tabla se ha configurado para residir en la memoria: significa 0; que no se ha configurado para residir en la memoria Reservar memoria.
3. Conclusiones
Cuando se configura una tabla de datos para que resida en la memoria, la tabla en realidad no se lee en la memoria hasta que se recupera. Por lo tanto, puede utilizar las siguientes instrucciones SQL para residir aún más la tabla de datos Departamento en la memoria:
Seleccione * Desde Departamento
Además, puede utilizar las siguientes instrucciones SQL para mostrar/detectar fácilmente todas las tablas configuradas para residir en la memoria de la base de datos:
SELECT * FROM INFORMACIÓN_SCHEMA.Tables
WHERE TABLE_TYPE = 'BASE TABLE'
AND OBJECTPROPERTY(object_id(TABLE_NAME), 'TableIsPinned' ) > 0