Aracılığıyla paylaş


sys.dm_os_schedulers (Transact-SQL)

Zamanlayıcı başına bir satır döndürür SQL Server her Zamanlayıcı burada eşlenmiş tek bir işlemci.Bir Zamanlayıcı durumunu izleyebilir veya ard arda görevleri tanımlamak için bu görünümü kullanın.

Sütun adı

Veri türü

Açıklama

scheduler_address

varbinary(8)

Scheduler bellek adresi.Nullable değil.

parent_node_id

int

Üst düğüm olarak da bilinen için Zamanlayıcı ait düğüm kimliği.Bu nonuniform bellek erişimi (numa) düğümü temsil eder.Nullable değil.

scheduler_id

int

Çizelgeleyici Kimliği.Normal sorgular çalıştırmak için kullanılan tüm planlayıcılar 1048576 küçüktür kimlik numaraları vardır.Sıfırdan büyük veya eşit 1048576 kimliklerine sahip bu planlayıcılar tarafından dahili olarak kullanılan SQL Server, adanmış yönetici bağlantısı Zamanlayıcı. gibiNullable değil.

cpu_id

smallint

cpu Zamanlayıcı atanan kimliği.

Nullable değil.

NotNot
255 değil göstermek hiçbir yakınlık olduğu gibi SQL Server 2005.Bakın sys.dm_os_threads (Transact-SQL) için ek benzeşimi bilgi.

status

nvarchar(60)

Zamanlayıcı durumunu gösterir.Aşağıdaki değerlerden biri olabilir:

  • ÇEVRİMİÇİ GİZLİ

  • ÇEVRİMDIŞI GİZLİ

  • GÖRÜNÜR ÇEVRİMİÇİ

  • GÖRÜNÜR ÇEVRİMDIŞI

  • GÖRÜNÜR çevrimiçi (DAC)

  • HOT_ADDED

Nullable değil.

Gizli planlayıcılar için iç isteklerini işlemek için kullanılan Veritabanı Altyapısı.GÖRÜNÜR planlayıcılar, kullanıcı isteklerini işlemek için kullanılır.

İşlemci benzeşimi maskesi çevrimdışı olan ve bu nedenle, tüm isteklerini işlemek için kullanılmadığından çevrimdışı planlayıcılar eşlenir.Çevrimiçi planlayıcılar benzeşme maskesini çevrimiçi ve iş parçacıkları işlemek kullanılabilir olan işlemciler eşleyin.

DAC Zamanlayıcı adanmış yönetici bağlantısı altında çalıştığını gösterir.

SICAK EKLENEN gösterir planlayıcılar eklendi yanıt olarak bir sıcak cpu olayekleyin.

is_online

bit

SQL Server Yapılandırılmış sunucu üzerinde kullanılabilir işlemci yalnızca bir bölümünü kullanmak için bu yapılandırma için işlemci benzeşimi maskesi. olmayan bazı planlayıcılar eşleştirilir gelebilirBu sütun , durumolması durumunda, 0 değerini döndürür.Bu değer, Zamanlayıcı sorguları veya toplu işlemleri işlemek için kullanıldığını değil anlamına gelir.

Nullable değil.

is_idle

bit

1 = Zamanlayıcı boşta.Hiçbir çalışanlarının çalışmakta olan.Nullable değil.

preemptive_switches_count

int

Bu Zamanlayıcı üzerinde işçilerini preemptive moduna geçmiş kez sayısı.

Dışında yürütmek kodu SQL Server (örneğin, genişletilmiş saklı yordamlar ve dağıtılmış sorgular), bir iş parçacığı vardır yürütmek denetimin dışındapreemptive olmayan bir Zamanlayıcı.Bunun için işçi preemptive moduna geçer.

context_switches_count

int

Bu Zamanlayıcı üzerinde oluşmuş içerik geçişi numarası.Nullable değil.

Diğer çalışanlara çalışmasına izin vermek için geçerli çalışan alt Zamanlayıcı denetimi teknisyene veya içeriğinde geçiş var.

NotNot
Bir alt Zamanlayıcı üretir ve kendisini runnable sıraya koyar ve diğer çalışanlara bulur, işçi kendisini seçin.Bu durum, context_switches_count güncelleştirilmez, ancak yield_count güncelleştirilir.

idle_switches_count

int

Sayısı Zamanlayıcı için bekleyen bir olay için boşta iken.Bu sütun benzer context_switches_count.Nullable değil.

current_tasks_count

int

Bu Zamanlayıcı ile ilişkili geçerli görevler sayısı.Bu sayaç, aşağıdakileri içerir:

  • İşçi yürütmek için onları bekleyen görevler.

  • Şu anda bekleyen veya (BEKLEMEDE veya runnable durumunda) çalışan görevler.

Görev tamamlandığında, bu sayısı azalır.Nullable değil.

runnable_tasks_count

int

Runnable sırada Planlanacak bekliyor, kendilerine atanmış görevlerle çalışanlarının sayısı.Nullable değil.

current_workers_count

int

Bu Zamanlayıcı ile ilişkili olan çalışanların sayısı.Bu sayaç, her görevin atanmamış olan işçilere içerir.Nullable değil.

active_workers_count

int

Etkin olan çalışanların sayısı.Etkin bir alt asla preemptive, ilişkili bir görev olmalıdır ve ya da runnable ya da askıya alınmış çalışıyor.Nullable değil.

work_queue_count

bigint

Görev bekleyen sıra sayısı.Bu görevler, onları çekmek işçi bekliyorsunuz.Nullable değil.

pending_disk_io_count

int

Bekleyen tamamlanmasını bekleyen g/Ç sayısı.Her Zamanlayıcı listesine sahip oldukları edilmiş olup olmadığını belirlemek için her saat tamamlandı denetlenen giriş çıkışları yok bir bağlam değiştirme.İstek eklendiğinde, bu sayı artırılır.İstek tamamlandığında bu sayısı azalır.Bu sayı çıkışları durumunu göstermez.Nullable değil.

load_factor

int

Bu Zamanlayıcı algılanan yükü gösteren iç değer.Bu değer, yeni bir Görev Zamanlayıcı bu veya başka bir Zamanlayıcı moduna olup olmadığını belirlemek için kullanılır.Bu değer, planlayıcılar eşit yüklenmemişse görüntülendiğinde ayıklamaya için yararlıdır.De SQL Server 2000, belirli bir Zamanlayıcı görev yönlendirilenBununla birlikte, SQL Server, yönlendirme kararı alınarak yükünü scheduler.SQL ServerAyrıca Yük faktörü düğümü planlayıcılar ve kaynakları sağlamak üzere en iyi yeri belirlemek için kullanır.Bir görev sıraya alındı, Yük faktörü artar.Yük faktörü, bir görev tamamlandığında azalır.Yükleme kullanarak Etkenler yardımcı SQL Server os Bakiye iş yükü daha iyi.Nullable değil.

yield_count

int

Bu Zamanlayıcı üzerinde ilerleme durumunu göstermek için kullanılan iç değer.Bu değer, Zamanlayıcı İzleyicisi tarafından Zamanlayıcı üzerinde işçi saatdiğer çalışanları için istediðinde yok olup olmadığını belirlemek için kullanılır.Bu değer alt veya görev için yeni bir alt moda olduğunu göstermez.Nullable değil.

last_timer_activity

bigint

Da cpu ticks, Zamanlayıcı süreölçer sırasının zamanlayıcısı tarafından denetlenen son saat .Nullable değil.

failed_to_create_worker

bit

Yeni işçi üzerinde bu Zamanlayıcı oluşturulamadı, 1 olarak ayarlayın.Bu, genellikle bellek kısıtlamaları nedeniyle oluşur.NULL olur.

active_worker_address

varbinary(8)

Şu an etkin olan alt bellek adresi.NULL olur.Daha fazla bilgi için, bkz. sys.dm_os_workers (Transact-SQL).

memory_object_address

varbinary(8)

Scheduler bellek nesnesi bellek adresi.nullable değil.

task_memory_object_address

varbinary(8)

Görev bellek nesnesi bellek adresi.Nullable değil.Daha fazla bilgi için, bkz. sys.dm_os_memory_objects (Transact-SQL).

quantum_length_us

bigint

Yalnızca bilgi amaçlı olarak belirtilmiştir. Desteklenmez. Gelecekteki uyumluluk garanti edilmez.sqlos tarafından kullanılan Zamanlayıcı kuantum sergiler.

İzinler

Sunucu üzerindeki görünüm server state izni gerektirir.

Örnekler

A.Gizli ve gizlenmemiş planlayıcılar izleme

Aşağıdaki sorgu çalışanlarının durumunu verir ve içindeki görevleri SQL Server üzerinden tüm planlayıcılar.Bu sorgu, aşağıda olan bir bilgisayar sistemine yürütüldü:

  • İki işlemci (CPU)

  • İki (numa) düğümü

  • NUMA düğümübaşına bir cpu

  • Benzeşme maskesi küme için 0x03.

SELECT
    scheduler_id,
    cpu_id,
    parent_node_id,
    current_tasks_count,
    runnable_tasks_count,
    current_workers_count,
    active_workers_count,
    work_queue_count
  FROM sys.dm_os_schedulers;

Sonuç kümesi buradadır.

scheduler_id cpu_id parent_node_id current_tasks_count
------------ ------ -------------- -------------------
0            1      0              9                  
257          255    0              1                  
1            0      1              10                 
258          255    1              1                  
255          255    32             2                  

runnable_tasks_count current_workers_count
-------------------- ---------------------
0                    11                   
0                    1                    
0                    18                   
0                    1                    
0                    3                    

active_workers_count work_queue_count
-------------------- --------------------
6                    0
1                    0
8                    0
1                    0
1                    0

Çıktı aşağıdaki bilgileri sağlar:

  • Beş zamanlamaları vardır.İki planlayıcılar kimliğe sahip < 1048576.Planlayıcılar kimliği ile >= gizli planlayıcılar bilinen 1048576are.Zamanlayıcı 255 adanmış yönetici bağlantısı (DAC) temsil eder.Bir DAC Zamanlayıcı her örnekvardır.Bellek baskısı eşgüdüm kaynak izleyicileri Zamanlayıcı kullanmak 257 ve Zamanlayıcı 258, her NUMA düğümü

  • Çıktıda 23 etkin görevler vardır.Bu görevler kullanıcı isteklerine göre başladı kaynak yönetimi görevlerini ek olarak dahil SQL Server.Örnekleri SQL Server görevlerdir kaynak İZLEYİCİSİ ( NUMA düğümübaşına bir adet), TEMBEL Yazan ( NUMA düğümübaşına bir adet), kilit İZLEYİCİSİ, Denetim ve günlük yazan.

  • NUMA düğümü 0 cpu eşlenmiş 1 ve NUMA düğümü 1 cpu eşlenmiş 0.SQL ServerNUMA düğümü düğüm 0 dışında genellikle başlar.Daha fazla bilgi için, bkz. Tip olmayan bellek erişimi anlama.

  • İle runnable_tasks_count döndüren 0, var Hayır etkin olarak çalışan görevler.Ancak, etkin oturumlar var olabilir.

  • Zamanlayıcı 255 temsil eden DAC sahip 3 işçilere it. ile ilişkiliBu işçilere en tahsis SQL Server Başlangıç ve Değiştir.Bu işçilere DAC sorgularını işlemek için kullanılır.Bu Zamanlayıcı üzerinde iki görevi, bağlantı yöneticisi ve boşta olan bir alt temsil eder.

  • active_workers_count Görevler ilişkili ve olmayan-preemptive modu altında çalışan tüm işçilerini temsil eder.Ağ dinleyicileri gibi bazı görevleri preemptive zamanlaması altında çalıştırın.

  • Gizli planlayıcılar, normal kullanıcı isteklerini işlemez.DAC Zamanlayıcı istisnadır.Bu DAC Zamanlayıcı isteklerini işlemek için bir iş parçacığı vardır.

B.Gizlenmemiş planlayıcılar meşgul sistem izleme

Aşağıdaki sorgu daha fazla istek kullanılabilir çalışanları tarafından işlenebilir daha yüklediğini aşırı yüklü gizlenmemiş planlayıcılar durumunu gösterir.Bu örnekte, görevleri 256 çalışanlara atanır.Bazı görevler, işçi atama bekliyorsunuz.Bir kaynakiçin birden fazla görev bekleyen alt runnable sayısı anlamına gelir.

Not

Çalışanların durumunu sorgulayarak bulabilirsiniz sys.dm_os_workers.Daha fazla bilgi için, bkz. sys.dm_os_workers (Transact-SQL).

Sorgu aşağıdadır:

SELECT
    scheduler_id,
    cpu_id,
    current_tasks_count,
    runnable_tasks_count,
    current_workers_count,
    active_workers_count,
    work_queue_count
  FROM sys.dm_os_schedulers
  WHERE scheduler_id < 255;

Sonuç kümesi buradadır.

scheduler_id current_tasks_count runnable_tasks_count
------------ ------------------- --------------------
0            144                 0                   
1            147                 1                   

current_workers_count active_workers_count work_queue_count
--------------------- -------------------- --------------------
128                   125                  16
128                   126                  19

Karşılaştırma aşağıdaki sonucu, burada hiçbir görev işçi almak için bekleyen birden fazla runnable görevleri gösterir.work_queue_count Olan 0 için hem planlayıcılar.

scheduler_id current_tasks_count runnable_tasks_count
------------ ------------------- --------------------
0            107                 98                  
1            110                 100                 

current_workers_count active_workers_count work_queue_count
--------------------- -------------------- --------------------
128                   104                  0
128                   108                  0