Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini menguraikan pengenalan prioritas pengindeksan dan peristiwa barisan data untuk Windows 7.
Topik ini diatur sebagai berikut:
Prioritisasi pengindeksan dan peristiwa rowset
Di Windows 7?dan yang lebih baru, ada tumpukan prioritas di mana konteks kueri tertentu, klien dapat meminta agar cakupan yang digunakan dalam kueri tersebut diprioritaskan di atas item normal.
Tumpukan prioritas ini memiliki karakteristik berikut:
- Item dalam tumpukan dapat memiliki latar depan, prioritas tinggi, atau rendah:
- Foreground: Logika Backoff dilewati dan pengindeksan berlangsung secepat yang diizinkan mesin.
- Tinggi: Permohonan prioritas telah diajukan dengan penundaan.
- Rendah: Permintaan prioritas telah diajukan, bukan dengan mengorbankan cakupan lain dalam tumpukan, tetapi di atas pengindeksan yang tidak diprioritaskan.
- Setiap permintaan untuk prioritas tinggi atau latar depan akan menggeser kueri yang membuat permintaan ke bagian atas tumpukan secara otomatis.
- Hanya item di atas tumpukan yang dapat memiliki prioritas latar depan.
- Kueri dengan prioritas latar depan yang diturunkan prioritasnya menerima peristiwa yang memberi tahunya bahwa ia telah kehilangan prioritas latar depan dan telah menjadi prioritas tinggi dengan penundaan.
Tumpukan prioritas menetapkan prioritas keseluruhan item yang diproses dalam pengindeks sebagai berikut:
Pemberitahuan Prioritas Tinggi tidak memiliki backoff, dan biasanya dikirim hanya untuk sejumlah kecil item. Misalnya, Windows Explorer menggunakan prioritas ini untuk operasi mesin salinan kecil.
Priority Stack adalah bagian atas tumpukan, memiliki backoff, dan merupakan kueri prioritas terakhir yang diminta.
Kueri kedua dalam tumpukan data.
Pertanyaan ketiga dalam tumpukan.
Kueri keempat dalam tumpukan, dan seterusnya.
Barang Prioritas Normal
Item yang dihapus.
Nota
Item dalam setiap grup diprioritaskan secara internal melalui semantik per item yang lebih lama.
Contoh IRowsetPriorization
API utama untuk pekerjaan prioritas tersedia melalui antarmuka berikut, yang dapat dipanggil dengan mengkueri set baris yang dikembalikan:
typedef [v1_enum] enum
{
PRIORITY_LEVEL_FOREGROUND = 0, // process items in the scope first as quickly as possible
PRIORITY_LEVEL_HIGH = 1, // process items in the scope first at the normal rate
PRIORITY_LEVEL_LOW = 2, // process items in this scope before those at the normal rate, but after any other prioritization requests
PRIORITY_LEVEL_DEFAULT = 3 // process items at the normal indexer rate
} PRIORITY_LEVEL;
[
object,
uuid(IRowsetPrioritization_GUID),
pointer_default(unique)
]
interface IRowsetPrioritization : IUnknown
{
// Sets or retrieves the current indexer prioritization level for the scope specified by
// this query.
HRESULT SetScopePriority( [in] PRIORITY_LEVEL priority, [in] DWORD scopeStatisticsEventFrequency );
HRESULT GetScopePriority( [out] PRIORITY_LEVEL * priority, [out] DWORD * scopeStatisticsEventFrequency );
// Gets information describing the scope specified by this query:
// indexedDocumentCount - The total number of documents currently indexed in the scope
// oustandingAddCount - The total number of documents yet to be indexed in the scope (those not yet included in indexedDocumentCount)
// oustandingModifyCount - The total number of documents indexed in the scope that need to be re-indexed (included in indexedDocumentCount)
HRESULT GetScopeStatistics( [out] DWORD * indexedDocumentCount, [out] DWORD * oustandingAddCount, [out] DWORD * oustandingModifyCount );
};
Prioritas rowset berfungsi sebagai berikut:
- IRowsetPrioritization diperoleh melalui metode IUnknown::QueryInterface pada rowset pengindeks. DBPROP_ENABLEROWSETEVENTS harus diatur ke TRUE dengan metode OLE DB ICommandProperties::SetProperties sebelum menjalankan kueri untuk menggunakan prioritas set baris.
- IRowsetPrioritization::SetScopePriority mengatur prioritas untuk cakupan milik kueri, dan interval peristiwa pemetaan statistik terjadi ketika ada dokumen yang tertunda untuk diindeks dalam cakupan kueri. Kejadian ini dipicu jika tingkat prioritas diatur ke nilai default.
- IRowsetPrioritization::GetScopeStatistics dapat digunakan untuk mendapatkan jumlah item terindeks dalam cakupan, jumlah dokumen terutang yang akan ditambahkan dalam cakupan, dan jumlah dokumen yang perlu diindeks ulang dalam cakupan ini.
Peristiwa IRowsetPrioritization
Ada tiga peristiwa rowset di IRowsetEvents::OnRowsetEvent dalam enumerasi ROWSETEVENT_TYPE:
// This method allows for future notifications of various actions about your rowset or items within
// eventType: - An identifier of the particular event being sent
// pVarEventData: - The expected value of the EventData for each event type
// ROWSETEVENT_TYPE_DATAEXPIRED - VT_EMPTY
// ROWSETEVENT_TYPE_FOREGROUNDLOST - VT_EMPTY
// ROWSETEVENT_TYPE_SCOPESTATISTICS - VT_VECTOR | VT_UI4 - 3 elements (0 = indexed items, 1 = outstanding adds, 2 = oustanding modifies)
HRESULT OnRowsetEvent( [in] ROWSETEVENT_TYPE eventType, [in] REFPROPVARIANT eventData );
Peristiwa set baris adalah sebagai berikut:
- Peristiwa ROWSETEVENT_TYPE_DATAEXPIRED menunjukkan bahwa data yang mendukung himpunan baris telah kedaluwarsa, dan bahwa set baris baru harus diminta.
- Peristiwa ROWSET_TYPE_FOREGROUNDLOST menunjukkan bahwa item yang sebelumnya memiliki prioritas utama di urutan prioritas telah diturunkan prioritasnya, karena ada orang lain yang memprioritaskan diri mereka lebih tinggi dari permintaan ini.
- Peristiwa ROWSETEVENT_TYPE_SCOPESTATISTICS memberi Anda informasi yang sama yang tersedia dari IRowsetPrioritization::GetScopeStatistics panggilan metode, tetapi melalui mekanisme pendorongan, sebagai berikut:
- Peristiwa terjadi jika API prioritas telah digunakan untuk meminta tingkat prioritas yang bukan bawaan, dan frekuensi peristiwa statistik yang bukan nol.
- Peristiwa muncul hanya ketika statistik benar-benar berubah, dan interval yang ditentukan dalam IRowsetPrioritization telah berlalu (interval tidak menjamin frekuensi peristiwa).
- Kejadian ini dijamin akan meningkatkan status "bounce zero" (nol item yang tersisa untuk ditambah, nol modifikasi yang tersisa), asalkan peristiwa dengan angka bukan nol telah terjadi.
- Pengindeks dapat memproses item tanpa mengirimkan kejadian ini, jika antrean kosong sebelum frekuensi kejadian statistik tercapai.
Sumber daya tambahan
Lihat sumber daya berikut yang terkait dengan pemrioritasan dan kumpulan baris.
- Antarmuka:
- Enumerasi:
Topik terkait