Kami memiliki server Windows 2008 x64 yang gemuk (CPU 4 x 4 core, RAM 32GB) yang menjalankan SQL Server 2005 64-bit. Kami memiliki basis data kecil (6GB) tetapi sangat penting yang agak lambat diakses hingga halaman di-cache dalam memori (penggunaannya sangat acak I / O sehingga kemungkinannya sangat rendah, halaman yang diberikan dalam memori dan pengguna akhir mengeluh tentang kelambatan awal). Disk cukup cepat (15K SAS lokal) tapi saya kira aplikasi ini agak canggung ditulis (ini adalah solusi COTS) jadi saya bertanya-tanya apakah ada cara untuk "memaksa" database dalam memori dalam SQL Server 2005 (2008 tidak didukung oleh vendor, jadi kita seharusnya tidak melakukan upgrade ke sana) untuk membantu menghindari blues mengisi-cache awal?
Metode saya saat ini adalah saya menjalankan SELECT * dari setiap tabel dalam skrip untuk mendapatkan halaman data dalam memori tetapi beberapa objek (indeks, pencarian teks lengkap, dll.) Tidak di-cache oleh metode ini (dan memodifikasi skrip untuk menginterogasi indeks dan tulis klausa WHERE yang sesuai untuk cache adalah boil-the-ocean complex).
sumber
Mengapa objek basis data memerah dari cache di tempat pertama? Apakah Anda me-restart layanan SQL atau melepas database / online? Atau mereka didorong oleh caching dari database lain?
Salam,
SCM.
sumber
Jika basis datanya sekecil itu, pertimbangkan untuk meletakkannya di SSD?
sumber
Saya punya beberapa skenario memperbarui statistik dengan FULLSCAN pada tabel kunci telah memaksa data ke dalam cache dan membuat DML saya berikutnya di sekitar tabel itu jauh lebih cepat. Dan ini bukan hasil dari statistik yang ketinggalan zaman karena tidak menghasilkan perubahan dalam rencana eksekusi.
sumber
Mengapa Anda tidak menginstal instance SQL Server kedua hanya dengan database itu, dan mengatur memori minimum untuk instance tersebut menjadi 6GB?
Ini akan menjamin bahwa basis data Anda yang lain tidak pernah mengambil memori dari basis data "kecil tapi sangat penting" Anda.
Ini juga berarti bahwa Anda dapat mengambil contoh lain offline dan DB kecil Anda akan tetap ada dalam memori.
sumber
Saya akan menggunakan profiler untuk memeriksa sql Anda. Bandingkan bacaan 'logis' dengan bacaan 'fisik'. SQL server pintar dan akan menggunakan RAM yang dibutuhkan untuk hasil yang paling efisien.
Periksa juga apakah autostats Anda terbaru.
Tanpa tahu lebih banyak tentang jenis kueri dan ukuran tabel db kedengarannya agak aneh.
sumber