tag:blogger.com,1999:blog-8153574442463741229.post4519448902518821811..comments2024-03-18T20:58:53.090+01:00Comments on Aprendiendo SQL Server: Mantenimiento de índices en SQL Server: cómo evitar la fragmentaciónlafarguehttp://www.blogger.com/profile/14455232775259438470noreply@blogger.comBlogger24125tag:blogger.com,1999:blog-8153574442463741229.post-78873699047391261472020-12-31T13:50:10.190+01:002020-12-31T13:50:10.190+01:00Muchas gracias.Muchas gracias.lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-1296165958151062112020-12-31T13:48:16.688+01:002020-12-31T13:48:16.688+01:00Excelente blog, muy bien explicado todo.Excelente blog, muy bien explicado todo.Ing. Pool Rodriguezhttps://www.blogger.com/profile/10725410296983445768noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-38402361568344253972018-11-15T23:48:23.546+01:002018-11-15T23:48:23.546+01:00Que buen blog!! felicitacionesQue buen blog!! felicitacionesAnonymoushttps://www.blogger.com/profile/03173502764542736443noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-63007176245409642892018-08-21T18:08:51.113+02:002018-08-21T18:08:51.113+02:00Hola Jaime, se que el tema es un poco viejo, pero ...Hola Jaime, se que el tema es un poco viejo, pero te agradezco me puedas colaborar, he corrido tu script pero me funciona para unas bases de datos y en otras me envía error de sintaxis, lo que me pude dar cuenta es que es la función de SQL que se encuentra en el script solo existe de versión 8 en adelante, que puedo hacer para solucionarlo, gracias.Anonymoushttps://www.blogger.com/profile/04533604116570966492noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-27646509769848716582016-12-17T13:58:39.148+01:002016-12-17T13:58:39.148+01:00Hola Roberto:
¿Has incluido la parte donde se dec...Hola Roberto:<br /><br />¿Has incluido la parte donde se declaran todas esas variables?<br /><br />DECLARE @objectid int;<br />DECLARE @indexid int;<br />DECLARE @partitioncount bigint;<br />DECLARE @schemaname nvarchar(130); <br />DECLARE @objectname nvarchar(130); <br />DECLARE @indexname nvarchar(130); <br />DECLARE @partitionnum bigint;<br />DECLARE @partitions bigint;<br />DECLARE @frag float;<br />DECLARE @command nvarchar(4000);<br /><br />Saludos.lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-45187929831598427612016-12-14T05:22:47.317+01:002016-12-14T05:22:47.317+01:00Hola, buenisima la rutina, pero al ejecutarla me s...Hola, buenisima la rutina, pero al ejecutarla me sale<br /><br />[Err] 42000 - [SQL Server]Debe declarar la variable escalar "@objectid".<br />42000 - [SQL Server]Debe declarar la variable escalar "@objectname".<br />42000 - [SQL Server]Debe declarar la variable escalar "@indexname".<br />42000 - [SQL Server]Debe declarar la variable escalar "@partitioncount".<br />42000 - [SQL Server]Debe declarar la variable escalar "@frag".<br />42000 - [SQL Server]Debe declarar la variable escalar "@indexname".<br />42000 - [SQL Server]Debe declarar la variable escalar "@frag".<br />42000 - [SQL Server]Debe declarar la variable escalar "@indexname".<br />42000 - [SQL Server]Debe declarar la variable escalar "@partitioncount".<br />42000 - [SQL Server]Debe declarar la variable escalar "@command".<br />42000 - [SQL Server]Debe declarar la variable escalar "@command".<br />42000 - [SQL Server]Debe declarar la variable escalar "@command".<br /><br /><br />que puedo estar haciendo mal?<br />gracias, saludos!Roberto Leandrohttps://www.blogger.com/profile/17567898921407417421noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-26320102240552238542016-11-08T02:43:02.660+01:002016-11-08T02:43:02.660+01:00HOLA SOLO ME APLICA LOS CAMBIOS EN UNA PARTICIÓN D...HOLA SOLO ME APLICA LOS CAMBIOS EN UNA PARTICIÓN DE MIS TABLAS DE DATOS Anonymoushttps://www.blogger.com/profile/17275772264303496175noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-54783740188221627732016-09-09T00:01:20.874+02:002016-09-09T00:01:20.874+02:00Gracias Jaime por tu pronta respuesta. Por cierto,...Gracias Jaime por tu pronta respuesta. Por cierto, respondiendo a Miguell, Probé los scripts con Sql Server 2016 y funcionó a la primera. César Villatorohttps://www.blogger.com/profile/11843309118143522761noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-71068205357744688792016-09-08T23:05:48.720+02:002016-09-08T23:05:48.720+02:00Este comentario ha sido eliminado por el autor.César Villatorohttps://www.blogger.com/profile/11843309118143522761noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-41258690133428798592016-09-08T22:41:16.273+02:002016-09-08T22:41:16.273+02:00Muchas gracias a ti, César, por tu amable comentar...Muchas gracias a ti, César, por tu amable comentario.<br />DBCC DBREINDEX está marcado por Microsoft para su futura desaparición, como puedes comprobar en la MSDN: https://msdn.microsoft.com/es-es/library/ms181671.aspx.<br /><br />Desde ese mismo enlace puedes ir a ALTER INDEX para comprobar su sintaxis. Verás que una de las opciones que admite es fillfactor.<br /><br />Saludos.lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-47087354644044168022016-09-08T21:28:23.616+02:002016-09-08T21:28:23.616+02:00Excelente aporte yforma de explicar, con palabras ...Excelente aporte yforma de explicar, con palabras sencillas, pero sobre todo muy útil. Gracias por tomarte el tiempo de compartir. Ya probé los 2 scripts en un servidor de pruebas y funcionan muy bien. Sólo una duda, en otro foro, leí algo parecido para defragmentar índices, lo hacen con el comando: DBCC DBREINDEX(@TableName,' ',90) donde comentan sobre la importancia de dejar un factor de llenado +/- de 90% para tablas que se modifican constantemente registros. Mi pregunta sería, ¿Cuál es la diferencia de ALTER INDEX vs DBREINDEX? y ¿Qué necesito modificar en tu script 'con alter index' para agregar el factor de llenado? Gracias.César Villatorohttps://www.blogger.com/profile/11843309118143522761noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-7955573341812410822016-06-18T10:40:57.355+02:002016-06-18T10:40:57.355+02:00Hola, Miguel:
Sigue siendo válido hasta 2014, al ...Hola, Miguel:<br /><br />Sigue siendo válido hasta 2014, al menos. Con 2016 todavía no lo he probado, pero no hay ningún cambio documentado que aparentemente lo vaya a romper.<br /><br />Eso sí, si usas discos SSD o suficiente memoria RAM para toda tu base de datos, la fragmentación deja de ser un problema tan serio.<br /><br />Jaimelafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-10486842515796558272016-06-18T09:25:55.997+02:002016-06-18T09:25:55.997+02:00Gracias por el aporte, tengo una solo una duda, ¿E...Gracias por el aporte, tengo una solo una duda, ¿Esto es valido para versiones 2008 en adelante?Miguell Lunahttps://www.blogger.com/profile/08187545650372591280noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-40821797900680889322016-06-18T09:25:21.723+02:002016-06-18T09:25:21.723+02:00Este comentario ha sido eliminado por el autor.Miguell Lunahttps://www.blogger.com/profile/08187545650372591280noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-48804319096483112722016-03-21T16:02:14.299+01:002016-03-21T16:02:14.299+01:00Gracias Jaime, es precisamente lo que pensaba, es ...Gracias Jaime, es precisamente lo que pensaba, es por ello que incluso ya comencé a leer un libro al respecto, tal vez por este medio, aunque ya me salí totalmente del tema original, quisiera saber si te has topado con inter-bloqueos de tablas y si es así (aunque me imagino que si) que has hecho para poder solucionar esto.<br /><br />Gracias.Mauriciohttps://www.blogger.com/profile/08669925721802008481noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-88170858222576056912016-03-21T11:48:26.276+01:002016-03-21T11:48:26.276+01:00Hola, Mauricio:
La pregunta que haces no tiene ot...Hola, Mauricio:<br /><br />La pregunta que haces no tiene otra respuesta que "la experiencia". Desde luego, no puedo decirte todas las buenas prácticas que he ido aprendiendo en un comentario de un blog :)<br /><br />En general, te recomiendo leer y practicar mucho. Con el tiempo se van aprendiendo las cosas. También acabarás conociendo ciertos blogs y libros de ciertos autores que te enseñen más que otros y seguirás más sus consejos que los de otros.<br />Al final se trata de ir encontrando soluciones a los problemas que se te plantean día a día en tu trabajo o estudios.lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-14109308466370177612016-03-18T14:18:17.316+01:002016-03-18T14:18:17.316+01:00Buenos días Jaime, te agradezco por el tiempo que ...Buenos días Jaime, te agradezco por el tiempo que te permitiste en contestar, si me aclaró mucho, ya que en otros lados no se entendía directamente de que era al borrar registros de las tablas que quedaban espacios en las páginas, yo se que es algo ambiguo lo que voy a preguntar y mas por el hecho de como dijiste "distintas formas de pensar de los expertos" pero tendrás algunos tips, para una optima o algo que ayude significativamente al rendimiento de una BD?Mauriciohttps://www.blogger.com/profile/08669925721802008481noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-89855750956663329532016-03-18T07:42:23.203+01:002016-03-18T07:42:23.203+01:00Hola, Mauricio:
Son preguntas muy interesantes la...Hola, Mauricio:<br /><br />Son preguntas muy interesantes las que haces. En primer lugar, comentar que existen dos tipos de fragmentación de los índices: la interna y la externa.<br /><br />Como sabes, los datos se organizan en páginas de 8 KB en disco. SQL escribe los datos de manera contigua en estas páginas, pero si borramos datos dejamos huecos dentro de esas páginas. Fragmentación interna: las páginas tienen espacio en blanco que consume memoria igualmente, ya que SQL carga los datos por páginas en memoria.<br /><br />Por otro lado, si insertamos datos en medio de los que ya existen y se necesita crear páginas nuevas, éstas se crearán al final del fichero, haciendo que el disco duro tenga que desplazar sus cabezales para leer datos contiguos. Fragmentación externa.<br /><br />La desfragmentación sirve para deshacer esta situación y volver a organizar tanto los datos dentro de las páginas, como las páginas en disco.<br /><br />Hay situaciones en las que la fragmentación importa menos, pero ya estamos hablando de cosas subjetivas, e incluso de distintas formas de pensar de los expertos. Por ejemplo, si tuvieras más GB memoria de los que ocupa tu base de datos en disco, tendrías todas las páginas en RAM y la fragmentación en disco no importaría. También depende del tipo de disco: a los SSD les afecta bastante menos la fragmentación.<br /><br />Pero, en general, conviene tener un buen sistema de mantenimiento de índices.<br /><br />Respecto a la tercera pregunta, como decimos en el último párrafo, es posible que la tabla sea tan pequeña que SQL haya decidido que no obtiene ningún beneficio reorganizando los índices.<br /><br />Espero haber resuelto tus dudas.<br /><br />Saludos.lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-45247714965912166542016-03-18T00:31:35.043+01:002016-03-18T00:31:35.043+01:00Buenas tardes, tengo un par de preguntas.
1. Por q...Buenas tardes, tengo un par de preguntas.<br />1. Por que sucede la defragmentacion de índices?<br />2. Por que ejecutas la defragmentacion? no es algo que se debe evitar?<br />3. he ejecutado la reconstrucción de un indice que tenía un 66% y luego de volver a consultarlo seguía igual (lo hice en el management studio y en transact)Mauriciohttps://www.blogger.com/profile/08669925721802008481noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-9343235551977971072016-03-18T00:30:50.535+01:002016-03-18T00:30:50.535+01:00Este comentario ha sido eliminado por el autor.Mauriciohttps://www.blogger.com/profile/08669925721802008481noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-58740417663490775542016-02-22T17:42:33.096+01:002016-02-22T17:42:33.096+01:00Hola, Pedro:
Me alegra que te haya gustado el post...Hola, Pedro:<br />Me alegra que te haya gustado el post.<br />Como puedes ver en el último párrafo, SQL considera que no hay beneficio en organizar un índice para tablas muy pequeñas.<br />No sé exactamente ahora mismo cuántas páginas de datos ocupan esos 2160 pedidos, pero seguramente no serán más de 1000 y por eso no ocurre nada.<br />En cualquier caso, no debes preocuparte por la fragmentación con "solo" unos pocos miles de registro.lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-26960502608116943152016-02-22T17:20:36.887+01:002016-02-22T17:20:36.887+01:00Hola,
Estoy haciendo pruebas en SQL server, con la...Hola,<br />Estoy haciendo pruebas en SQL server, con la base de datos Northwind, que puedes descargar en la página oficial de Microsoft.<br />el caso es que a la hora de analizar una tabla que contiene lineas de pedido, 2160 concretamente, obtengo una fragmentación del 70% en los indices, este campo contiene valores repetidos. el caso es que he hecho una REBUILD, y un REORGANIZE, y al volver a analizar otra vez los indices, me continua indicando que la fragmentación es del 70%, ¿Por que puede ser esto?, No está realizando dichas acciones?, he notado que el REBUILD y el REORGANIZE, no tardan nada, puede ser este el problema?, gracias de anemano, y muy buen postPedrohttps://www.blogger.com/profile/14696277698723902551noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-9675174801176081872016-02-15T12:53:30.498+01:002016-02-15T12:53:30.498+01:00Gracias a ti por tus amables palabras.Gracias a ti por tus amables palabras.lafarguehttps://www.blogger.com/profile/14455232775259438470noreply@blogger.comtag:blogger.com,1999:blog-8153574442463741229.post-56536325252172931952016-02-15T12:47:30.231+01:002016-02-15T12:47:30.231+01:00Me ha venido como anillo al dedo esta entrada. Muy...Me ha venido como anillo al dedo esta entrada. Muy útil, muchas gracias por la excelente informacion que aportas en este blogCC Baxterhttps://www.blogger.com/profile/07971369537018687423noreply@blogger.com