Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
SQL Server In-Memory OLTP menggunakan lebih banyak memori dan dengan cara yang berbeda dari SQL Server. Ada kemungkinan bahwa jumlah memori yang Anda instal dan alokasikan untuk In-Memory OLTP menjadi tidak memadai untuk kebutuhan Anda yang berkembang. Jika demikian, Anda bisa kehabisan memori. Topik ini membahas cara memulihkan dari situasi OOM. Lihat Memantau dan Memecahkan Masalah Penggunaan Memori untuk panduan yang dapat membantu Anda menghindari banyak situasi kehabisan memori (OOM).
Tercakup dalam topik ini
| Topik | Gambaran Umum |
|---|---|
| Mengatasi kegagalan pemulihan database karena OOM | Apa yang harus dilakukan jika Anda mendapatkan pesan kesalahan, "Operasi pemulihan gagal untuk database '<>' karena memori yang tidak cukup di kumpulan sumber daya '<'."> |
| Mengatasi dampak kondisi memori rendah atau OOM pada beban kerja | Apa yang harus dilakukan jika Anda menemukan masalah memori rendah berdampak negatif pada performa. |
| Mengatasi kegagalan alokasi halaman akibat memori yang tidak mencukupi meskipun memori sebenarnya tersedia cukup | Apa yang harus dilakukan jika Anda mendapatkan pesan kesalahan, "Melarang alokasi halaman untuk database '<databaseName>' karena memori tidak mencukupi di kumpulan sumber daya '<resourcePoolName>'." ..." ketika memori yang tersedia cukup untuk operasi. |
Mengatasi kegagalan pemulihan database karena OOM
Ketika Anda mencoba memulihkan database, Anda mungkin mendapatkan pesan kesalahan: "Operasi pemulihan gagal untuk database '<databaseName>' karena memori yang tidak mencukup di kumpulan sumber daya '<resourcePoolName>'." Sebelum berhasil memulihkan database, Anda harus mengatasi masalah memori yang tidak mencukupi dengan membuat lebih banyak memori tersedia.
Untuk mengatasi kegagalan pemulihan karena kekurangan memori, tingkatkan memori yang tersedia dengan menggunakan salah satu atau semua dari cara ini untuk sementara memperbesar memori yang tersedia untuk operasi pemulihan.
Tutup sementara aplikasi yang sedang berjalan.
Dengan menutup satu atau beberapa aplikasi yang sedang berjalan, seperti Visual Studio, Internet Explorer, OneNote, dan lainnya, Anda membuat memori yang mereka gunakan tersedia untuk operasi pemulihan. Anda dapat memulai ulang setelah pemulihan berhasil.Tingkatkan nilai MAX_MEMORY_PERCENT.
Cuplikan kode ini mengubah MAX_MEMORY_PERCENT untuk pool sumber daya PoolHk menjadi 70% dari memori yang terpasang.Penting
Jika server berjalan pada VM dan tidak didedikasikan, atur nilai MIN_MEMORY_PERCENT ke nilai yang sama dengan MAX_MEMORY_PERCENT.
Lihat topik Praktik Terbaik: Menggunakan OLTP Dalam Memori di lingkungan VM untuk informasi selengkapnya.-- disable resource governor ALTER RESOURCE GOVERNOR DISABLE -- change the value of MAX_MEMORY_PERCENT ALTER RESOURCE POOL PoolHk WITH ( MAX_MEMORY_PERCENT = 70 ) GO -- reconfigure the Resource Governor -- RECONFIGURE enables resource governor ALTER RESOURCE GOVERNOR RECONFIGURE GOUntuk informasi tentang nilai maksimum untuk MAX_MEMORY_PERCENT lihat bagian topik Persentase memori yang tersedia untuk tabel dan indeks yang dioptimalkan memori
Mengonfigurasi ulang memori server maksimal.
Untuk informasi tentang mengonfigurasi memori server maks , lihat topik Mengoptimalkan Performa Server Menggunakan Opsi Konfigurasi Memori.
Mengatasi dampak kondisi memori rendah atau OOM pada beban kerja
Sudah jelas, yang terbaik adalah menghindari kondisi memori rendah atau situasi OOM (Kehabisan Memori). Perencanaan dan pemantauan yang baik dapat membantu menghindari situasi OOM. Namun, perencanaan terbaik tidak selalu memprediksi apa yang sebenarnya terjadi dan Anda mungkin berakhir dengan memori rendah atau kehabisan memori. Ada dua langkah untuk memulihkan dari OOM:
Buka DAC (Koneksi Administrator Khusus)
Microsoft SQL Server menyediakan koneksi administrator khusus (DAC). DAC memungkinkan administrator untuk mengakses instans mesin database SQL Server yang sedang berjalan untuk memecahkan masalah pada server-bahkan ketika server tidak responsif terhadap koneksi klien lain. DAC tersedia melalui sqlcmd utilitas dan SQL Server Management Studio (SSMS).
Untuk panduan tentang penggunaan sqlcmd dan DAC lihat Menggunakan Koneksi Administrator Khusus. Untuk panduan tentang menggunakan DAC melalui SQL Server Management Studio, lihat Cara: Menggunakan Koneksi Administrator Khusus dengan SQL Server Management Studio.
Mengambil tindakan korektif
Untuk mengatasi kondisi OOM, Anda perlu membebaskan memori yang ada dengan mengurangi penggunaan, atau membuat lebih banyak memori tersedia untuk tabel dalam memori Anda.
Membersihkan memori yang tersedia
Hapus baris tabel yang dioptimalkan memori non-esensial dan tunggu pengumpulan sampah
Anda dapat menghapus baris yang tidak penting dari tabel memori yang dioptimalkan. Pengelola sampah mengembalikan memori yang digunakan oleh baris-baris ini ke memori yang tersedia. . Mesin OLTP berbasis memori membersihkan baris data yang tidak terpakai secara agresif. Namun, transaksi jangka panjang dapat mencegah pengumpulan sampah. Misalnya, jika Anda memiliki transaksi yang berjalan selama 5 menit, versi baris apa pun yang dibuat karena operasi pembaruan/penghapusan saat transaksi aktif tidak dapat dikumpulkan sampah.
Memindahkan satu atau beberapa baris ke tabel berbasis disk
Artikel TechNet berikut memberikan panduan tentang memindahkan baris dari tabel yang dioptimalkan memori ke tabel berbasis disk.
Meningkatkan memori yang tersedia
Meningkatkan nilai MAX_MEMORY_PERCENT pada kumpulan sumber daya
Jika Anda belum membuat kumpulan sumber daya bernama untuk tabel dalam memori, Anda harus melakukannya dan mengikat database OLTP Dalam Memori Anda ke dalamnya. Lihat topik Menghubungkan Database dengan Tabel yang Dioptimalkan Memori ke Pool Sumber Daya untuk panduan tentang membuat dan menghubungkan database OLTP yang Dioptimalkan Memori Anda ke pool sumber daya.
Jika database OLTP Dalam Memori Anda terikat ke kumpulan sumber daya, Anda mungkin dapat meningkatkan persentase memori yang dapat diakses kumpulan. Lihat sub-topik Ubah MIN_MEMORY_PERCENT dan MAX_MEMORY_PERCENT pada kumpulan yang ada untuk panduan tentang mengubah nilai MIN_MEMORY_PERCENT dan MAX_MEMORY_PERCENT untuk kumpulan sumber daya.
Tingkatkan nilai MAX_MEMORY_PERCENT.
Cuplikan kode ini mengubah MAX_MEMORY_PERCENT untuk pool sumber daya PoolHk menjadi 70% dari memori yang terpasang.
Penting
Jika server berjalan pada VM dan tidak didedikasikan, atur nilai MIN_MEMORY_PERCENT dan MAX_MEMORY_PERCENT ke nilai yang sama.
Lihat topik Praktik Terbaik: Menggunakan OLTP Dalam Memori di lingkungan VM untuk informasi selengkapnya.
-- disable resource governor
ALTER RESOURCE GOVERNOR DISABLE
-- change the value of MAX_MEMORY_PERCENT
ALTER RESOURCE POOL PoolHk
WITH
( MAX_MEMORY_PERCENT = 70 )
GO
-- reconfigure the Resource Governor
-- RECONFIGURE enables resource governor
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
Untuk informasi tentang nilai maksimum untuk MAX_MEMORY_PERCENT, lihat bagian topik Persentase memori yang tersedia untuk tabel dan indeks yang dioptimalkan memori.
Pasang memori tambahan
Pada akhirnya solusi terbaik, jika memungkinkan, adalah menginstal memori fisik tambahan. Jika Anda melakukan ini, ingatlah bahwa Anda mungkin juga akan dapat meningkatkan nilai MAX_MEMORY_PERCENT (lihat perubahan sub-topik MIN_MEMORY_PERCENT dan MAX_MEMORY_PERCENT pada kumpulan yang ada) karena SQL Server kemungkinan tidak akan membutuhkan lebih banyak memori, memungkinkan Anda untuk membuat sebagian besar jika tidak semua memori yang baru diinstal tersedia untuk kumpulan sumber daya.
Penting
Jika server berjalan pada VM dan tidak didedikasikan, atur nilai MIN_MEMORY_PERCENT dan MAX_MEMORY_PERCENT ke nilai yang sama.
Lihat topik Praktik Terbaik: Menggunakan OLTP Dalam Memori di lingkungan VM untuk informasi selengkapnya.
Mengatasi kegagalan alokasi halaman yang disebabkan oleh memori tidak mencukupi, meskipun sebenarnya memori yang cukup tersedia.
Jika Anda mendapatkan pesan kesalahan, "Melarang alokasi halaman untuk database '<databaseName>' karena memori yang tidak mencukupi pada kumpulan sumber daya '<resourcePoolName>'. Lihat 'https://go.microsoft.com/fwlink/?LinkId=330673' untuk informasi selengkapnya." dalam log kesalahan ketika memori fisik yang tersedia cukup untuk mengalokasikan halaman, mungkin karena Resource Governor yang dinonaktifkan. Ketika Resource Governor dinonaktifkan, MEMORYBROKER_FOR_RESERVE menyebabkan tekanan memori buatan.
Untuk mengatasinya, Anda perlu mengaktifkan Resource Governor.
Lihat Mengaktifkan Resource Governor untuk informasi tentang Batasan dan Pembatasan serta panduan tentang mengaktifkan Resource Governor menggunakan Object Explorer, properti Resource Governor, atau Transact-SQL.
Lihat Juga
Mengelola Memori untuk OLTP In-Memory
Memantau dan Memecahkan Masalah Penggunaan Memori
Mengikat Database dengan Tabel yang Dioptimalkan Memori ke Kumpulan Sumber Daya
Praktik Terbaik: Menggunakan In-Memory OLTP di lingkungan VM