Question

J'utilise SQL Server 2008 sur Windows Server 2008. Je trouve la température DB mdf et la température LDF est très grand (environ 13G), et il est à peu près la même taille de tous les autres fichiers de base de données d'application réelle (mdf + LDF) .

Mes questions,

  1. Quelle température DB est utilisé?
  2. Est-il normal que la situation température DB est si grand? Dans le cas contraire, des façons de température de nettoyage DB sans impact sur les performances et la fiabilité du système?

Merci d'avance, George

Était-ce utile?

La solution

Vous pouvez réduire les fichiers tempdb mdf / LDF en utilisant le shrinkfile, SHRINKDATABASE commandes DBCC.

use tempdb
go

dbcc shrinkfile (tempdev, 'target size in MB')
go

dbcc shrinkfile (templog, 'target size in MB')
go

L'écriture de code d'une manière efficace peut éviter la croissance de la tempdb. Évitez d'utiliser « curseurs » dans votre code qui sont les principales maladies mortelles de performance et plus le jeu de données du curseur plus la taille de la tempdb. Évitez d'utiliser des tables temporaires lorsque sa non necassary. en utilisant #temptable, ## temptable pour toute la portée lorsque ce ne est pas nécessaire causera à nouveau des problèmes de performance.

SQL 2005/2008 a CTEs où en vous pouvez interroger des données sur une table temporaire et la portée est juste une ligne après.

;With CTETable as
(
  SELECT <Columnlist> FROM <TableName> {Joins} WHERE <Condition> GROUP BY <Column List> ORDER BY <COlumn> ASC
)

SELECT ColumnList from CTETABLE
....
Statements

La portée de cette CTEtable expire après « SELECT ColumnList de CTETABLE » ligne. De cette façon, il est plus efficace. L'écriture des requêtes efficaces serait également utile.

Autres conseils

1: TempDB est utilisé pour des choses comme genre. Anythin temporaire. Les développeurs stupides en utilisant inutilement l'instruction DISTINCT sont frapper une partie. Ainsi que des tables temporaires.

2: Non, il y a des cas rares cela peut être le cas, mais ce sont des cas limites inhabituelles. Tempdb nettoyage .... serveur redémarrage. Tempdb est totalement régénéré à chaque démarrage. Ensuite, commencer à chercher des requêtes qui vont à tempdb. Cela nécessitera un travail manuel. Vérifiez les clauses DISTINCTS utilisées inutilement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top