Pengaturan memori maksimum di SQL Server

11

Saya menjalankan SQL Server 2008 dan aplikasi berbasis web, pada satu server khusus, dengan hanya 2Gb memori yang tersedia.

Seperti dicatat di tempat lain, SQL Server secara teratur membutuhkan hingga 98% dari memori fisik, yang tampaknya memperlambat aplikasi web yang berjalan di server.

Dalam Properti Server di SSMS, di bawah Memori, Memori Server Maksimum (dalam Mb) diatur ke: 2147483647 Sql Server

Pertanyaan saya adalah, berapa jumlah yang disarankan untuk dimasukkan ke dalam kotak memori server maksimum, mengingat jumlah memori yang saya miliki, dan bahwa server yang sama juga menjalankan aplikasi web?

Selain itu, apakah aman untuk membuat perubahan ke nomor ini, sementara SQL Server sedang berjalan?

Terima kasih atas saran Anda.

Tikar
sumber
2
Artikel terbaru yang saya tulis tentang terlalu banyak komit pada SQL Server mungkin bermanfaat bagi Anda untuk membaca.
Jon Seigel

Jawaban:

13

Saya akan menjawab pertanyaan terakhir terlebih dahulu: Ya, Anda dapat mengubahnya saat server berjalan tanpa masalah. Jika Anda ingin mengubah nilai melalui SQL, Anda dapat melakukannya dengan kueri berikut

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO

Lihat halaman ini untuk detail lebih lanjut tentang pengaturan memori pada SQL server.


Pertanyaan pertama Anda, sayangnya jawabannya adalah: Saya tidak bisa memberi tahu Anda, saya tidak ada di sana.

Ada 1.000.000 hal yang perlu Anda pertimbangkan saat mengalokasikan memori. Seberapa besar set hasil dari kueri, seberapa sering dijalankan, apakah kueri yang digunakan untuk mengambil 20 md menjadi ok untuk sekarang mengambil 200 md?

Default Sql mengasumsikan bahwa itu adalah satu-satunya yang berjalan di server, jadi itu hanya mengatur memori ke MAX_VALUE dan berhenti tumbuh ketika semua memori yang tersedia sedang digunakan (dan pada perangkat keras khusus yang cukup dekat dengan apa yang Anda inginkan terjadi (lihat Aarons berkomentar untuk kemungkinan peringatan)). Biasanya setiap server web atau perangkat lunak lain yang berinteraksi dengan database akan menggunakan perangkat keras yang berbeda untuk berkomunikasi melalui jaringan.

Anda benar-benar hanya perlu mengaturnya ke nilai yang Anda pikir waras, dan jika server web Anda masih tersendat, ingatanlah yang lebih rendah. Jika SQL tidak memberi Anda kinerja yang cukup setelah Anda memberikan server web memori yang dibutuhkan, Anda perlu membeli lebih banyak ram atau memindahkan SQL ke perangkat keras khusus.

Scott Chamberlain
sumber
2
Ada Laporan yang bagus di SSMS tentang memori server SQL: blogs.msdn.com/b/buckwoody/archive/2007/10/17/... Anda dapat melacak bagian mana yang memakan sebagian besar memori
DiGi
1

Anda seharusnya tidak pernah membiarkan sql server mengambil semua memori pada kotak .. Itu tergantung pada apa yang berjalan pada kotak itu dan berapa banyak memori yang dimiliki kotak, tetapi saya selalu memastikan bahwa saya meninggalkan 10% dari memori untuk O \ S.

Trish Walker
sumber
0

Di perusahaan saya saat ini di mana saya disewa saya selalu menggunakan pengaturan minimum dan maksimum untuk SQL Server. Maksimal, jika server hanya digunakan untuk SQL Server saya selalu mengatur pada memori MAX - 1gb untuk OS. Minimum dalam kasus kami di 2GB.

Tapi itu terbukti untuk instalasi kami. Tidak setiap instalasi dan penggunaannya sama, dan saya masih merasa bahwa memori selalu tidak melakukan apa yang Anda inginkan;)

Mungkin menjadi hal yang diketahui dalam kasus Anda, tetapi juga melihat pertukaran memori. Ketika Anda hanya memiliki 2GB di server dan Anda memiliki OS dan SQL Server berjalan pada "beban tinggi", konsumsi memori akan menjadi terlalu tinggi di mana OS akan cenderung melakukan swapping. Pastikan file halaman Anda tidak ada di drive OS, atau Anda mungkin berakhir dengan sistem yang benar-benar macet (pernah ada sebelumnya dan tidak menyukainya)

Mark Kremers
sumber
-1

Saya baru saja mengubah "memori server maks" di server langsung tanpa masalah. Sepertinya sudah diatur sebagai 2147483647 secara default pada semua database (tapi saya tidak tahu bagaimana sebenarnya membaca nilai dari SQL sebelum perubahan) ...

Cortisol Addiced
sumber
-2

Tetap dengan default di 99% kasus. Ini akan memungkinkan manajemen memori yang dinamis.

SirSpammedALot
sumber