Pangkalan data kedaluwarsa Statistik menurunkan kinerja SharePoint Server, menyebabkan waktu habis dan menghasilkan galat run-time

Tentang statistik pangkalan data

Statistik untuk permintaan optimasi adalah objek yang berisi informasi statistik tentang distribusi nilai dalam kolom satu atau lebih dari tabel atau tampilan indeks. Permintaan Pengoptimal menggunakan statistik untuk memperkirakan cardinality, atau jumlah baris pada permintaan hasil. Perkiraan cardinality ini mengaktifkan Pengoptimal permintaan untuk membuat rencana permintaan berkualitas tinggi.

Sebagai contoh, Pengoptimal permintaan dapat meningkatkan kinerja dengan menggunakan cardinality perkiraan untuk memilih indeks mencari operator bukannya lebih sumber daya-intensif indeks pemindaian operator permintaan. Jika tidak, statistik kedaluwarsa dapat menurunkan kinerja permintaan menggunakan rencana permintaan efisien.

Penyebaran SharePoint besar perusahaan harus memiliki rencana pemeliharaan database untuk memperbarui database Statistik pangkalan data konten yang berada di Microsoft SQL Server. Pelanggan tidak boleh mengandalkan hanya pekerjaan pemeliharaan database berbasis SharePoint untuk melakukan tugas ini. Untuk informasi selengkapnya, lihat praktik terbaik untuk SQL Server di daerah SharePoint Server.

Gejala

Saat pangkalan data statistik menjadi kedaluwarsa, SharePoint Server penginstalan mungkin mengalami satu atau lebih gejala berikut ini:
  • Lambat load kali dan penurunan kinerja yang dapat menghasilkan galat HTTP 500 ketika Anda membuka halaman situs
  • Kinerja lambat yang menghasilkan pesan galat seperti berikut ini:

    Layanan tidak tersedia

    Tidak dikenal SQL pengecualian 53

    Galat server di aplikasi '/' Runtime Error
  • Melakukan pencarian menjelajah penyebab kinerja SQL Server yang tak terduga, penguncian database dan pemblokiran
  • Pekerjaan timer lama berjalan seperti pekerjaan "Microsoft SharePoint Foundation penggunaan pemrosesan Data" yang semakin lama untuk menyelesaikan selama setiap iterasi
  • Ketidakmampuan untuk membuka situs SharePoint, dan pesan galat yang menyerupai berikut ini:

    Tiba-tiba System.Web.HttpException: Permintaan habis
  • Situs rendering waktu habis saat Anda memuat navigasi, dan pesan galat berikut:

    PortalSiteMapProvider tidak dapat mengambil anak-anak untuk node
  • Penggunaan CPU yang tinggi di server yang menjalankan SQL Server saat memproses permintaan SharePoint

Penyebab

Masalah ini dapat disebabkan oleh Statistik pangkalan data kedaluwarsa. SharePoint berjalan pekerjaan timer setiap hari untuk memperbarui Statistik pangkalan data dengan menggunakan prosedur SQL proc_updatestatistics . Namun, untuk berbagai alasan, pekerjaan timer ini tidak dapat diselesaikan atau tidak dapat memutakhirkan semua tabel secara konsisten. Misalnya, apabila cadangan menjalankan terhadap pangkalan data konten dari SQL Server dengan pekerjaan timer SharePoint, pekerjaan tidak melanjutkan.

Ketika pekerjaan timer SharePoint yang pembaruan Statistik selesai, peristiwa berikut dapat ditulis ke log ULS:
  • e9bf "Galat terjadi saat memperbarui statistik dalam database, {0}"
  • cm1y "memperbarui statistik dalam database, {0}"
  • dbl2 "melewatkan Statistik pemutakhiran {0} database karena statusnya {1}"
  • cm1x "memperbarui Statistik di semua database di {0}"
Jika kondisi ini tidak dimonitor terus dan tindakan perbaikan tidak dilakukan, database Statistik menjadi kedaluwarsa, dan masalah kinerja SharePoint akhirnya terjadi.

Pemecahan masalah

Untuk mencegah gejala ini dan kemungkinan pemutusan layanan, rencana pemeliharaan SQL Server harus diterapkan untuk menjaga SharePoint pangkalan data konten statistik diperbarui dengan menggunakan opsi FULLSCAN. Untuk informasi selengkapnya, lihat indeks Statistik.

Saat menerapkan rencana pemeliharaan SQL Server untuk memperbarui Statistik database SharePoint, tidak diperlukan untuk menonaktifkan pekerjaan dari SharePoint. Namun, karena tugas pemeliharaan ini menjalankan fungsi yang sama dari lokasi kedua, dibolehkan untuk menonaktifkan pekerjaan timer dari SharePoint farm. Untuk informasi selengkapnya tentang cara mengelola pekerjaan pembaruan indeks dari SharePoint Server, lihat pangkalan data yang digunakan oleh SharePoint telah usang indeks Statistik (SharePoint 2013).

Informasi lebih lanjut

Memperbarui Statistik database konten SharePoint, menggunakan opsi FULLSCAN, setiap harinya dari SQL Server adalah merekomendasikan praktik terbaik. Untuk informasi selengkapnya, lihat praktik terbaik untuk SQL Server di daerah SharePoint Server dan pemeliharaan Database SharePoint Foundation 2010.

Namun, apabila Anda farm SharePoint saat ini mengalami masalah kinerja karena sudah ketinggalan zaman Statistik, informasi berikut ini dapat digunakan sebagai langkah mitigasi satu kali untuk mengatasi masalah ini.

Untuk menampilkan informasi statistik database dari pangkalan data khusus, jalankan kueri berikut ini:
-- Checking the DB Statsselect a.id as 'ObjectID', isnull(a.name,'Heap') as 'IndexName', b.name as 'TableName', 
stats_date (id,indid) as stats_last_updated_time
from sys.sysindexes as a
inner join sys.objects as b
on a.id = b.object_id
where b.type = 'U'
Untuk informasi selengkapnya tentang statistik database meninjau, lihat DBCC SHOW_STATISTICS.

Untuk memperbarui database Statistik database tunggal yang menggunakan opsi FULLSCAN, jalankan kueri berikut ini:
-- Update DB StatsEXEC sp_MSforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN'
Catatan penting Opsi "sp_MSforeachtable" adalah didokumentasikan prosedur yang disediakan "sebagaimana adanya" dan hanya akan digunakan untuk mengurangi masalah segera. Kami tidak sarankan agar Anda menggunakan prosedur ini sebagai bagian dari rencana pemeliharaan rutin. Sebaliknya, lihat dokumentasi Statistik PEMUTAKHIRAN (Transact-SQL) kami tentang cara menerapkan rencana untuk pembaruan statistik, menggunakan opsi FULLSCAN.

Tergantung pada bagaimana kedaluwarsa Statistik pangkalan data menjadi, Anda mungkin harus membersihkan cache rencana permintaan dengan menjalankan perintah DBCC FREEPROCCACHE setelah Anda memperbarui Statistik pangkalan data. Anda akan menemukan sintaks dan argumen untuk prosedur ini DBCC FREEPROCCACHE (Transact-SQL). Melakukan hal ini memastikan bahwa permintaan baru menggunakan rencana optimal eksekusi setelah database statistik diperbarui. Sebagai contoh, lihat kueri berikut ini:
-- Remove all elements from the plan cacheDBCC FREEPROCCACHE
Catatan penting Menjalankan perintah DBCC FREEPROCCACHE membersihkan tembolok untuk semua permintaan rencana di dalam contoh SQL. Perintah ini harus dipahami dengan baik sebelum Anda menjalankan selama jam produksi.

Jika perintah DBCC FREEPROCCACHE tidak dijalankan setelah memperbarui Statistik pangkalan data kedaluwarsa, permintaan dengan efisien eksekusi rencana mungkin masih berada di tembolok dan dapat digunakan. Jika demikian, memaksa mengkompilasi ulang pada prosedur tersimpan tertentu dengan menggunakan prosedur yang tersimpan (Lihat sp_recompile (Transact-SQL)). Misalnya, lihat kueri berikut ini:
USE SP2013_Content_DBGO
sp_recompile proc_getwebnavstruct
Menjalankan perintah sp_recompile bersama-sama dengan prosedur, fungsi, atau tabel parameter target satu elemen dalam tembolok untuk penghapusan tanpa mempengaruhi contoh.
Properti

ID Artikel: 3103194 - Tinjauan Terakhir: 29 Jan 2017 - Revisi: 1

Tanggapan