Actualizacin de estadsticas sncronas o asncronas mejoran la
respuesta del optimizador de consultas. SQL Server
Las estadsticas usadas para la optimizacin de consulta, son objetos que contienen informacin estadstica acerca de la distribucin de valores en una o ms columnas de una tabla o vista indexada. El optimizador de consultas utiliza las estadsticas para estimar la cardinalidad o el nmero de flas del resultado de la consulta, lo que ace posible que el optimizador de consultas pueda crear un plan de consulta de alta calidad.
!a" # opciones de estadsticas, conf$urables, a nivel de cada base de datos% &'()*+,E&(E*-(&(.-(.+- &'()*'/0&(E*-(&(.-(.+- &'()*'/0&(E*-(&(.-(.+-*&-12+ &'()*+,E&(E*-(&(.-(.+- " &'()*'/0&(E*-(&(.-(.+- La opcin automtica de creacin de estadsticas, &'()*+,E&(E*-(&(.-(.+-, " la de actualizacin de estadsticas, &'()*'/0&(E*-(&(.-(.+-, estn activadas de forma predeterminada% &L(E, 0&(&3&-E ('*3ase0atos -E( &'()*+,E&(E*-(&(.-(.+- )24 &L(E, 0&(&3&-E ('*3ase0atos -E( &'()*'/0&(E*-(&(.-(.+- )24 5) Estas actualizaciones de las estadsticas son sincronas, las consultas siempre se compilan " ejecutan con estadsticas actualizadas4 cuando las estadsticas estn obsoletas, el optimizador de consultas espera a que las estadsticas est6n actualizadas antes de compilar " ejecutar la consulta. -e aconseja su uso cuando se realiza operaciones que cambian la distribucin de los datos, como truncar una tabla o realizar una actualizacin masiva de un $ran porcentaje de las flas. -i no actualiza las estadsticas despu6s de completar la operacin, el uso de estadsticas sincrnicas $arantizar que las estadsticas est6n actualizadas antes de ejecutar las consultas en los datos cambiados. &'()*'/0&(E*-(&(.-(.+-*&-12+ La opcin automtica de creacin de estadsticas asincronas, &'()*'/0&(E*-(&(.-(.+-*&-12+, no estn activadas de forma predeterminada% &L(E, 0&(&3&-E ('*3ase0atos -E( &'()*'/0&(E*-(&(.-(.+-*&-12+ )24 5) Estas actualizaciones de las estadsticas son asincrnicas, las consultas se compilan con las estadsticas existentes incluso aunque est6n anticuadas4 el optimizador de consultas podra ele$ir un plan de consulta poco ptimo si las estadsticas estn obsoletas cuando se compila la consulta. Las consultas que se compilan cuando las actualizaciones asincrnicas se an completado se benefciarn del uso de estadsticas actualizadas. -e aconseja su uso% +uando su aplicacin ejecuta frecuentemente la misma consulta, consultas similares o los planes de consulta almacenados en memoria cac6 similares. -us tiempos de respuesta a la consulta podran ser ms predecibles con actualizaciones asincrnicas de las estadsticas que con actualizaciones sincrnicas, porque el optimizador de consultas puede ejecutar las consultas de entrada sin esperar a que las estadsticas se actualicen -i su aplicacin a experimentado tiempos de espera de solicitud de cliente causados por una o varias consultas que a$uardaban la actualizacin de estadsticas. En al$unos casos, la espera por las estadsticas sincrnicas podra causar errores en aplicaciones con tiempos de espera a$resivos.
'sar estadsticas sincronas " asincronas, de forma conjunta. La opcin &'()*'/0&(E*-(&(.-(.+-*&-12+ se establece en el nivel de la base de datos " determina el m6todo de actualizacin para todas las estadsticas de la base de datos. -lo es aplicable a la actualizacin de estadsticas " no se puede usar para crear estadsticas de forma asincrnica. El establecimiento de esta opcin en )2 no tiene nin$n efecto a menos que &'()*'/0&(E*-(&(.-(.+- tambi6n se establezca en )2. 0e forma predeterminada, la opcin &'()*'/0&(E*-(&(.-(.+-*&-12+ est en )77. En aquellos escenarios donde no tenemos un control total sobre las operaciones que se realizan en la base de datos " no podemos ilar siempre mu" fno es preferible tener actualizaciones sncronas, de esta forma no obtendremos la mejor de las latencias " posiblemente suframos en al$unas consultas, pero minimizamos el ries$o de tener pocas consultas 8optimizadas9, en base a unas estadsticas no adecuadas, que nos pueden dar un $ran dis$usto. Estadsticas fltradas +,E&(E -(&(.-(.+- Las estadsticas fltradas pueden mejorar el rendimiento de las consultas. /ara la ma"ora de las consultas, el optimizador de consultas $enera "a las estadsticas necesarias para un plan de consulta de alta calidad4 en al$unos casos, para mejorar el rendimiento de la consulta necesita crear estadsticas adicionales con +,E&(E -(&(.-(.+-. & modo de ejemplo, se crean las estadsticas 2ame-tatistic para todas las flas de las columnas +olum:.0 " +olum; de la tabla (3& " se desabilita la posibilidad de volver a calcular las estadsticas automticamente +,E&(E -(&(.-(.+- 2ame-tatistic )2 (u*3ase0atos. (3&.(3& <+olum:.0, +olum;= >.(! 7'LL-+&2, 2),E+)?/'(E4
'tilizar esta opcin puede producir planes de consulta poco ptimos. -e recomienda usar esta opcin con moderacin " que lo a$a nicamente un administrador de sistemas cualifcado. &ctivar actualizacin automtica de estadsticas en -@L ;AAA
/ara activar la actualizacin automtica de estadsticas en -@L ;AAA%
--habilita: auto create statistics sp_dboption TubaseDatos, 'auto create statistics', 'ON' GO --habilita: auto update statistics sp_dboption TubaseDatos, 'auto update statistics', 'ON' GO --habilita: sp_autostats EXEC sp_autostats 'ON' GO
+uando se actualizan las estadsticas automticas
/ara tablas con mucas flas, emos de tener cuidado "a que las estadsticas se actualizan 8automticamente9 cuando se an cambiado <insertBupdateBdelete= mas del ;AC de la cantidad de flas actuales de la tabla. Ese valor se $uarda en la columna DroEmodctrF en la tabla de sistema Ds"sindexesF.
/or poner un ejemplo, en una tabla con GA.AAA.AAA re$istros, e ima$inando que a" un promedio de ;AA.AAA re$istros modifcados por da. 1 lue$o solo se acen select el resto del da%
:AA.AA H <;AA,AAA B GA,AAA,AAA= I A.;J
+omo veis, la cantidad de flas que se insertan en un da equivalen al A.;J, de la cantidad de flas actuales " por tanto -@L -erver no actualizara las estadsticas asta que el valor en DroEmodctrF sea el ;AC de las flas. /or eso a" que vi$ilar de cerca las tablas con mucas flas " de ser posible buscar el tiempo adecuado para actualizar sus estadsticas. 1a que puede penalizar la creacin de los planes de ejecucin, en estas tablas.
/ara forzar la actualizacin de estadsticas, en todos los objetos de las bases de datos, para evitar estar en el anterior escenario comentado%
--Actualizo estadisticas EXEC sp_updatestats GO
)s paso el procedimiento que nos dice el tamaKo de un tabla de nuestra base de datos%
sp_spaceused 'Nobre_De_Tu_Tabla'
)s paso un procedimiento para ver los tamaKos de todas las tablas de una base de datos, en -@L -erver ;AAA% <En versiones posteriores, esta informacin se muestra desde el ?ana$ement -tudio=
C!EATE "!OCED#!E dbo$Table%pace#sed A%
-- Create the teporar& table$$$ C!EATE TA'(E )tbl!esults * +nae, n-archar*./0, +ro1s, int, +reser-ed, -archar*230, +reser-ed_int, int de4ault*/0, +data, -archar*230, +data_int, int de4ault*/0, +inde5_size, -archar*230, +inde5_size_int, int de4ault*/0, +unused, -archar*230, +unused_int, int de4ault*/0 0
-- "opulate the tep table$$$ EXEC sp_6%4oreachtable 7coand28 9:N%E!T :NTO )tbl!esults *+nae,,+ro1s,,+reser-ed,,+data,,+inde5_size,,+unused,0 EXEC sp_spaceused ';'9
-- !eturn the results$$$ %E(ECT ? @!O6 )tbl!esults
+omo calcular la lon$itud de los campos de todas las tablas de una bbdd LLLon$itud de campo de todas las tablas en sql sever ;AAJ -E( 2)+)'2( )2 03++ '/0&(E'-&5E<A= LL 03 size. EME+ sp*spaceusedLL (able roE counts and sizes. +,E&(E (&3LE Nt < DnameF 2O&,+!&,<:;G=, DroEsF +!&,<::=, reserved O&,+!&,<:G=, data O&,+!&,<:G=, index*size O&,+!&,<:G=, unused O&,+!&,<:G== .2-E,( Nt EME+ sp*ms7orEac(able PEME+ sp*spaceused PPQPPP -ELE+( H7,)? NtLL N of roEs. -ELE+( -'?<+&-(<DroEsF &- int== &- DroEsF7,)? Nt 0,)/ (&3LE Nt LLen lu$ar de select sum<cast<roEs as int= que dice el nmero total de flas, puedes poner -ELE+( -'?<+&-(<DroEsF &- int== &- DroEsF, sum<cast<reserved as Raot==H:A;S as b"tereservados 7,)? Nt
7uentes% ?icrosoft, ?-02 &punte " recopilacin por Norman M. Pardell
Puedes consultarme, si deseas cualquier aclaracin, pregunta o sugerencia en: Contacto, contestar tan pronto como me sea