ID Artikel: 195565 - Kajian Terakhir: 19 September 2011 - Revisi: 2.0 Statistik pemeliharaan fungsi (autostats) di SQL Server
Pada Halaman iniRINGKASANFungsionalitas baru diperkenalkan statistik pemeliharaan, AutoStat, mungkin
menghasilkan overhead yang tidak diinginkan pada sistem produksi dengan melakukan salah satu
tindakan berikut:
Untuk informasi tentang autostats di SQL Server 2000, lihat "Statistik digunakan oleh Query Optimizer di Microsoft SQL Server 2000" di situs Website MSDN berikut: .aspx http://msdn2.Microsoft.com/en-us/library/aa902688 (SQL.80)
(http://msdn2.microsoft.com/en-us/library/aa902688(SQL.80).aspx)
Catatan Jika Anda menggunakan Microsoft SQL Server 2005, melihat kertas putih Microsoft berikut untuk informasi tentang bagaimana statistik yang digunakan oleh Pengoptimal query di SQL Server 2005: http://technet.Microsoft.com/en-us/library/cc966419.aspx
(http://technet.microsoft.com/en-us/library/cc966419.aspx)
INFORMASI LEBIH LANJUTInformasi umumSQL Server menggunakan Pengoptimal berbasis biaya yang dapat sangat sensitif terhadap informasi statistik yang disediakan pada tabel dan indeks. Tanpa benar dan up-to-date informasi statistik, SQL Server dapat ditantang untuk menentukan rencana pelaksanaan terbaik untuk tertentu permintaan.Statistik dipelihara di setiap meja di SQL Server untuk membantu Pengoptimal dalam berbasis biaya keputusan meliputi:
Untuk menjaga informasi statistik dalam mode sebagai up-to-date sebagai mungkin, SQL Server memperkenalkan AutoStat, yang, melalui SQL Server pemantauan meja modifikasi, mampu secara otomatis memperbarui Statistik untuk tabel ketika ambang perubahan tertentu telah tercapai. Selain itu, SQL Server memperkenalkan auto-membuat-statistik, yang menyebabkan server untuk secara otomatis menghasilkan semua statistik yang diperlukan untuk akurat optimasi pencarian tertentu. Menentukan ketika AutoStat generasi dekatSeperti disebutkan di atas, AutoStat akan secara otomatis memperbarui statistik untuk meja tertentu ketika "perubahan ambang batas" telah tercapai. The sysindexes.rowmodctr kolom mempertahankan berjalan total dari semua modifikasi tabel itu, dari waktu ke waktu, dapat mempengaruhi permintaan prosesor proses pengambilan keputusan. Counter ini diperbarui setiap kali salah Setelah peristiwa terjadi:
Setelah tabel statistik telah diperbarui, nilai rowmodctr diatur ke 0 dan tabel statistik skema versi diperbarui. Lebih lanjut, dalam situasi di mana rencana pelaksanaan prosedur yang disimpan adalah diambil dari cache dan rencana yang sensitif terhadap statistik, statistik skema versi akan dibandingkan dengan versi sekarang. Jika ada yang baru Statistik yang tersedia, rencana untuk prosedur yang tersimpan akan recompiled. Algoritma dasar untuk auto update statistik adalah:
CATATAN: Selain untuk cardinality, selektivitas predikat juga mempengaruhi AutoStats generasi. Ini berarti bahwa statistik tidak mungkin diperbarui afer modifikasi setiap 500 jika cardinality < 500="" or="" for="" every="" 20%="" of="" changes="" if="" cardinality="" were=""> 500. Skala atas faktor (nilai berkisar dari 1 sampai 4, 1 dan 4 inklusif) yang dihasilkan tergantung pada selektivitas dan produk dari faktor ini dan beberapa perubahan seperti yang Diperoleh dari algoritma akan jumlah sebenarnya modifikasi yang diperlukan untuk AutoStats generasi. Algoritma di atas dapat diringkas dalam bentuk tabel: _________________________________________________________________________________ Table Type | Empty Condition | Threshold When Empty |Threshold When Not Empty _________________________________________________________________________________ Permanent | < 500 rows | # of Changes >= 500 | # of Changes >= 500 + (20% of Cardinality) ___________________________________________________________________________ Temporary | < 6 rows | # of Changes >= 6 | # of Changes >= 500 + (20% of Cardinality) ___________________________________________________________________________ Table Variables | Change in cardinality does not affect AutoStats generation. ___________________________________________________________________________ Contoh 1Mempertimbangkan penulis tabel dalam database Pub, yang berisi baris 23 dan memiliki dua indeks. Indeks berkerumun unik, UPKCL_auidind, diindeks di satu kolom, au_id, dan nonclustered composite index, aunmind, telah dibuat pada au_lname dan au_fname kolom. Karena tabel ini berisi kurang dari 500 baris, AutoStat akan mulai setelah 500 perubahan ke meja data telah terjadi. Perubahan dapat menjadi salah satu 500 atau lebih memasukkan, menghapus, perubahan ke kolom diindeks seperti au_lname, atau kombinasi daripadanya.Anda dapat, oleh karena itu, memprediksi ketika UPDATE statistik akan diprakarsai oleh pemantauan nilai sysindexes.rowmodctr, yang akan bertambah setelah setiap update. Ketika itu mencapai atau melebihi 500, Anda dapat mengharapkan UPDATE Statistik untuk dimulai. Contoh 2Mempertimbangkan tabel kedua, t2, yang telah cardinality 1.000. Untuk tabel dengan lebih dari 500 baris, SQL Server akan UPDATE statistik ketika (500 + 20 persen) perubahan yang telah dibuat. Melakukan matematika, 20 persen dari 1.000 adalah 200, sehingga Anda dapat mengharapkan untuk melihat AutoStat mulai setelah sekitar 700 modifikasi telah dibuat ke meja.Mengotomatisasi penentuan AutostatsUntuk mengotomatisasi penentuan ketika AutoStat akan berjalan, Anda dapat jajak pendapat sysindexes meja dan mengidentifikasi ketika meja modifikasi mencapai titik awal. Berikut ini adalah algoritma dasar untuk melakukannya:Anda kemudian dapat menjadwal pekerjaan melakukan hal berikut:
Mengontrol apakah UPDATE statistik menjalankan tabelSolusi yang paling jelas untuk pertanyaan ini, ketika AutoStat telah terbukti Problematic, adalah untuk menonaktifkan auto statistik generasi, sehingga meninggalkan database administrator gratis untuk menjadwal pembaruan statistik selama kurang kali mengganggu. Anda dapat melakukan hal ini baik dengan menggunakan statistik UPDATE pernyataan atau sp_autostats disimpan prosedur. Sintaks untuk UPDATE Statistik pernyataan adalah:Sintaks untuk sp_autostats disimpan prosedur adalah: sp_autostats <table_name>, <stats_flag>, <index_name>
</index_name> </stats_flag> </table_name> dimana <stats_flag>adalah baik "pada" atau "mati".
</stats_flag>Anda juga dapat menggunakan sp_dboption untuk menonaktifkan terjadinya otomatis UPDATE Statistik atau membuat statistik pada tingkat per-database: sp_dboption <dbname>, 'auto update statistik', <on |="" off=""><b00></b00>
</on> </dbname> -atau- sp_dboption <dbname>, 'auto buat statistik', <on |="" off=""> </on> </dbname> Mengendalikan jumlah bersamaan proses UPDATE statistikSaat ini, pendek menonaktifkan AutoStat untuk tabel, tidaklah mungkin untuk mengkonfigurasi jumlah otomatis UPDATE statistik pernyataan yang sedang dijalankan secara bersamaan (DCR 51539 telah diajukan untuk ini). The server, namun, membatasi jumlah bersamaan UPDATE statistik proses untuk empat per prosesor.Menentukan ketika Autostats menjalankanAnda dapat menggunakan jejak bendera 205 melaporkan ketika bergantung statistik disimpan prosedur recompiled sebagai akibat dari AutoStat. Bendera jejak akan menulis pesan berikut untuk log kesalahan:1998-10-15 11:10:51.98 spid9 mengkompilasi ulang dikeluarkan: ProcName: sp_helpindex LineNo: 75 StmtNo: 29 1998-10-15 11:38:43.68 skema spid8 mengubah: Tbl Dbid: 7 Objid: 133575514 RowModCnt: 60500 RowModLimit: 60499 Juga dimungkinkan untuk mengaktifkan jejak bendera 8721, yang akan membuang informasi ke error log yang ketika AutoStat telah dijalankan. Berikut adalah contoh dari jenis pesan yang dapat Anda harapkan untuk melihat: 1998-10-14 16:22:13.21 spid13 AUTOSTATS: DIPERBARUI Tbl: [penulis] Baris: 23 modifikasi: 501 terikat: 500 durasi: 47ms UpdCount: 2 Anda juga dapat menggunakan SQL Server Profiler untuk mengidentifikasi kapan UPDATE statistik pernyataan yang dijalankan. Untuk melakukannya, lakukan langkah-langkah berikut:
Skema kunciSQL Server mempekerjakan dua jenis skema kunci, yang diambil ketika memperbarui statistik untuk tabel:Sch-S: Schema Stability Lock ---------------------------- This lock ensures that a schema element, such as a table or index, will not be dropped while any session holds a schema stability lock on the schema element. Sch-M-UPD-STATS: Schema Modification Lock ----------------------------------------- This is a non-blocking lock that is used by the system to ensure that only one automatic UPDATE STATISTICS process is run against a table at any given point in time. The sp_lock stored procedure will report this lock has having a type = TAB, resouce = UPD-STATS and mode = SCH-M. Berlaku bagi:
Penerjemahan MesinPENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah. Klik disini untuk melihat versi Inggris dari artikel ini:195565
(http://support.microsoft.com/kb/195565/en-us/
)
| Sumber Lain Situs Pendukung Lain
KomunitasCari Bantuan SekarangTerjemahan Artikel
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Kembali ke atas
