Apakah statistik SQL Server disimpan dalam basis data atau kumpulan buffer?

10

Hanya ingin tahu apakah statistik disimpan dalam database tetapi tidak dalam memori? Jika saya mencadangkan / mengembalikan database dari server prod ke server pengembangan, akankah ia menyimpan statistik yang sama sehingga rencana eksekusi tidak akan jauh berbeda jika saya melakukannya di server pengembangan?

Joy Walker
sumber

Jawaban:

15

Kumpulan buffer adalah cache dari database. Tidak pernah ada 'atau', hal-hal yang ada di buffer pool juga ada di database, selalu. Dan apapun yang dibaca dari database harus, bahkan untuk sementara, ada di buffer pool.

Adapun pertanyaan: statistik ada di database sehingga cadangan / pengembalian akan mempertahankan statistik.

Namun perlu dicatat bahwa menjaga statistik bukan jaminan untuk merencanakan reproduksibilitas. Faktor-faktor lain memengaruhi pembuatan paket, seperti jumlah CPU dan jumlah RAM.

Remus Rusanu
sumber
ok, masuk akal. terimakasih atas klarifikasinya!
Joy Walker
3

Seperti yang dikatakan Remus , statistik tabel disimpan dalam database yang mirip dengan objek lain seperti tabel dan indeks. Mereka memainkan peran besar dalam memilih rencana eksekusi, tetapi ada faktor-faktor lain.

Yang sedang berkata, SQL Server tahu jenis statistik lain, statistik yang memberi kita informasi tentang perilaku terbaru.

Misalnya DMVs ys.dm_db_index_usage_statsdan sys.dm_db_index_operational_statskembalikan statistik tentang bagaimana indeks digunakan.

Statistik tersebut disimpan dalam memori saja. Tersesat di server restart dan jangan bepergian dengan cadangan.

Namun, pengoptimal juga tidak menggunakan ini untuk menghasilkan rencana.

Sebastian Meine
sumber
Ya, ini sebabnya saya memiliki pertanyaan / kebingungan sejak awal. Saya berpikir statistik mirip dengan DMV. Mereka bisa hilang ketika server restart atau db dikembalikan ke server lain. Terima kasih telah menjelaskannya.
Joy Walker