2012-05-15 3 views
0

J'ai une table avec 10 millions d'enregistrements et j'ai besoin de charger tout en mémoire (application de cache).SQL Server 2008 Sélectionnez la performance sur la table des enregistrements 10 Mil - lente?

structure de table est comme:

CREATE TABLE [TestTable] (
    [Id]  [int] IDENTITY(1,1) NOT NULL, 
    [RefId1] [int] NOT NULL, 
    [RefId2] [int] NOT NULL, 
    [RefId3] [int] NULL, 
    [Credits] [money] NOT NULL, 
    CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED ([Id]), 
    CONSTRAINT [UK_Table] UNIQUE NONCLUSTERED ([RefId1],[RefId2],[RefId3]) 
) 

Dimensions de la table est sur le point: 364080 KB (données) - 341648 KB (index)

Pour charger cette quantité de données avec une simple sélection prend environ 2 minutes .

Sélectionnez utilisé:

SELECT Id, RefId1, Credits, RefId3 
FROM TestTable WITH (NOLOCK) 

Est-ce une performance de vitesse normale pour SQL Server? Comment puis-je accélérer cette requête?

La requête a été testée à partir de l'application de mise en cache et de SSMS, le résultat était pratiquement le même. J'utilise SQL Server 2008 R2 Std, sur un serveur 16 core avec 32 Go de RAM et SSD Disk RAID, sans autres applications ou connexions au serveur SQL. À partir des compteurs de performance, je peux voir qu'il n'y a pas d'utilisation de la file d'attente/du disque/du processeur parce que la base de données est complètement en mémoire. Lors de l'exécution de la requête, la seule information visible est un trafic réseau lent entre le SQL et le SSMS d'environ 6 Mo/s.

Tous les tests ont été effectués sur la machine locale.

Des suggestions sur la façon d'accélérer ou de chercher le problème?

Répondre

0

Je suppose que ce n'est pas un problème de serveur SQL, il s'agit plus de transférer une énorme quantité de données de la base de données vers votre fichier/mémoire d'échange Windows local. Pourquoi avez-vous besoin de toute la table, SQL Server va déterminer quelles pages doivent rester dans le cache lors de scénarios normaux.

+0

Nous mettons en cache toutes les données de notre service afin de fournir une meilleure réactivité à notre système de transaction. Les tables mises en cache changent rarement. Le service fonctionne bien pour l'instant, mais nous cherchons à accélérer le processus de redémarrage. – Marko

Questions connexes