Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Mantener Indices en Sql server

Estas en el tema de Mantener Indices en Sql server en el foro de SQL Server en Foros del Web. Hola, estoy mirando el porcentaje de fragmentacion de esta manera @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT OBJECT_NAME ( dt . object_id ) , si ...
  #1 (permalink)  
Antiguo 08/02/2014, 14:48
 
Fecha de Ingreso: agosto-2010
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Mantener Indices en Sql server

Hola, estoy mirando el porcentaje de fragmentacion de esta manera

Código SQL:
Ver original
  1. SELECT OBJECT_NAME(dt.object_id),si.name, dt.avg_fragmentation_in_percent, dt.avg_page_space_used_in_percent
  2. FROM
  3. (SELECT object_id, index_id, avg_fragmentation_in_percent, avg_page_space_used_in_percent
  4. FROM sys.dm_db_index_physical_stats (DB_ID('base'), NULL, NULL, NULL, 'DETAILED')
  5. WHERE index_id = 0) AS dt --Con index_id 0 evitamos traer información de tablas que no tienen índices (Heaps)
  6. INNER JOIN sys.indexes si
  7. ON si.object_id = dt.object_id
  8. AND si.index_id = dt.index_id

luego, como la fragmentacion externa es mayor al 10% aplico lo siguiente:

Código SQL:
Ver original
  1. ALTER INDEX nombreindice ON tabla1
  2. REORGANIZE;

el problema es que cuando vuelvo a ejecutar el primer comando vuelvo a ver el mismo porcentaje de fragmentacion. Gracias

Última edición por gnzsoloyo; 11/02/2014 a las 10:14
  #2 (permalink)  
Antiguo 10/02/2014, 12:45
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Mantener Indices en Sql server

10% se me hace muy bajo, deberías tomar en cuanta aquellos que estén => 50%
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 11/02/2014, 10:09
Avatar de Missi  
Fecha de Ingreso: agosto-2011
Mensajes: 391
Antigüedad: 12 años, 8 meses
Puntos: 43
Respuesta: Mantener Indices en Sql server

La recomendación general de Microsoft en el 90 % de los casos es ...
Si esta entre 5 y 30 -> Reorganizar
Si es > 30 Reconstruir.
  #4 (permalink)  
Antiguo 15/02/2014, 10:06
 
Fecha de Ingreso: agosto-2010
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Mantener Indices en Sql server

avg_fragmentation_in_percent=26.6
avg_page_space_used_in_percent=93.4
tanto Reorganizando como Reconstruyendo los porcentajes no varian
  #5 (permalink)  
Antiguo 15/02/2014, 21:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mantener Indices en Sql server

cual es el tamaño de tus datos, como estan organizados tus indices, ese indice en particula que tamaño tiene??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 15/02/2014, 21:12
 
Fecha de Ingreso: agosto-2010
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Mantener Indices en Sql server

Hola, no se a que te referis exactamente, pasame si podes el script y te digo. Gracias
  #7 (permalink)  
Antiguo 16/02/2014, 19:46
 
Fecha de Ingreso: agosto-2010
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Mantener Indices en Sql server

La unica forma de reducir la fragmentacion fue estableciendo un fillfactor menor a 10. Pero no se si esta bien lo que hice, porque ademas en ningun lado y en ninguna documentacion de Microsoft dice que hay que hacer esto para reducirla.
  #8 (permalink)  
Antiguo 16/02/2014, 22:01
 
Fecha de Ingreso: agosto-2010
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Mantener Indices en Sql server

perdon, me olvidaba
el page_count es menor a 300 en todos los indices
  #9 (permalink)  
Antiguo 16/02/2014, 22:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mantener Indices en Sql server

Cita:
Iniciado por micase Ver Mensaje
Hola, no se a que te referis exactamente, pasame si podes el script y te digo. Gracias
investiga un poco mas sobre indices, el echo que la fragmentacion no se reduzca no quiere decir que tu indice no este mal, ademas como bien mencionas si tu fillfactor esta en un numero mayor a 10 entonces como quieres que se reduzca??? y para que quieres el fillfactor reducido?? sabes que es eso???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 19/02/2014, 20:56
 
Fecha de Ingreso: agosto-2010
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Mantener Indices en Sql server

Hola, no tiene nada que ver una cosa con la otra, en ningun lugar dice que para reducir la fragmentacion hay que usar un fillfactor de 10. El problema es simple. Olvidate del fillfactor.
el problema es que el porcentaje de fragmentacion es muy elevado y no se puede bajar de ninguna manera
  #11 (permalink)  
Antiguo 19/02/2014, 21:17
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mantener Indices en Sql server

yo he bajado porcentajes de 99% a un 1% asi de que se puede se puede.....y claro esta que un fillfactor elevado es mejor que uno menor.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 21/02/2014, 02:11
 
Fecha de Ingreso: agosto-2010
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Mantener Indices en Sql server

Claro que es posible, yo tambien puedo bajarlos estableciendo un fillfactor. Pero la documentacion de Microsoft es muy clara y no hace referencia a ningun fillfactor, como metodo para poder bajar la fragmentacion. Por algun motivo que no esta claro aun ,el porcentaje no varia.
  #13 (permalink)  
Antiguo 21/02/2014, 08:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mantener Indices en Sql server

muchas cosas no estan documentadas por microsoft, pero funcionan, ahora al decir que he bajado me referia a que despues de aplicar un rebuild o un reorganize han bajado los indices de fragmentacion, porque porque tienen un fillfactor alto, esto quiere decir que los espacios de cada pagina son llenados casi en su totalidad con un fillfactor bajo lo que pasa es que tus paginas quedan mas vacias creando una fragmentacion mas alta.......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 21/02/2014, 22:49
 
Fecha de Ingreso: agosto-2010
Mensajes: 45
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Mantener Indices en Sql server

pero entonces no hay ninguna alternativa? porque con un fillfactor alto no puedo reducir nada, y con uno bajo no conviene... o sea, yo uso REBUILD WITH FILLFACTOR = 10
y con mas de 10 no se reduce nada. Entiendo lo que me decis, pero creo que si no se reduce nada con un fillfactor mayor es porque es muy probable que no necesite hacer nada y dejar el indice como esta, es posible que tenga que ver con el numero de paginas

Etiquetas: indice, mantenimiento, programación-general, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:05.