CACHESTORE_SQLCP Sql Paket membutuhkan waktu> 38 GB setelah beberapa hari.
Kami sudah menjalankan opsi "optimalkan untuk beban kerja ad hoc" aktif. (Kerangka Entitas dan pelaporan khusus membuat banyak hoc iklan!)
SQL Server 2016 SE 3.00.2164.0.v1 pada AWS RDS dengan mirroring multi-AZ
Ketika saya menjalankan:
DBCC FREESYSTEMCACHE('SQL Plans');
atau
DBCC FREEPROCCACHE
atau
DBCC FREESYSTEMCACHE ('SQL Plans') WITH MARK_IN_USE_FOR_REMOVAL
atau
DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;
Tampaknya tidak jelas:
SELECT TOP 1 type, name, pages_kb FROM sys.dm_os_memory_clerks ORDER BY pages_kb desc
type name pages_kb
CACHESTORE_SQLCP SQL Plans 38321048
Saya menjalankan dengan Query Store diaktifkan, tetapi saya menonaktifkannya untuk melihat apakah itu mengganggu apa pun, sepertinya tidak membantu, tapi saya tidak melakukannya.
Yang aneh juga
SELECT COUNT(*) FROM sys.dm_exec_cached_plans
adalah 1-3 atau lebih (tampaknya hanya menunjukkan permintaan yang sedang berjalan saat ini), meskipun semua memori dicadangkan, bahkan sebelum saya berusaha menghapus apa pun. Apa yang saya lewatkan?
CACHESTORE_SQLCP mengambil lebih dari 60% dari semua memori yang tersedia, yang menjadi perhatian karena ada menunggu memori terjadi sesekali. Selain itu, kami harus membunuh DBCC CHECKDB rutin selama akhir pekan yang berlangsung selama 4 jam karena memori yang tidak cukup sedang menunggu (itu diselesaikan secara instan tanpa kesalahan dengan PHYSICAL_ONLY aktif).
Apakah ada cara untuk mendapatkan kembali memori ini (selain reboot malam !?)
Perbarui dari komentar / jawaban
Ketika saya berlari
SELECT * FROM sys.fn_my_permissions(NULL,NULL)
saya mendapat
entity_name subentity_name permission_name
server CONNECT SQL
server CREATE ANY DATABASE
server ALTER ANY LOGIN
server ALTER ANY LINKED SERVER
server ALTER ANY CONNECTION
server ALTER TRACE
server VIEW ANY DATABASE
server VIEW ANY DEFINITION
server VIEW SERVER STATE
server ALTER SERVER STATE
server CREATE SERVER ROLE
server ALTER ANY SERVER ROLE
Yang termasuk ALTER SERVER STATE
izin yang diperlukan .
Output dari DBCC FREEPROCCACHE
is
Eksekusi DBCC selesai. Jika DBCC mencetak pesan kesalahan, hubungi administrator sistem Anda.
Yang merupakan pesan standar. Fungsi DBCC lain yang RDS tidak mendukung memberikan pesan kesalahan tentang izin.
(Sehari kemudian dan setelah menjalankan itu lagi, Paket SQL masih 38.321.280 kb)
Perbarui dari komentar / jawaban
SELECT pool_id, name, cache_memory_kb, compile_memory_kb FROM sys.dm_resource_governor_resource_pools
output:
pool_id name cache_memory_kb compile_memory_kb
1 internal 38368408 1168080
DBCC FREEPROCCACHE ('internal')
tidak melakukan sesuatu yang berbeda
Memperbarui
SQL Error Log mencatat berikut ini setiap kali:
2017-10-19 14:26:47.22 spid85 SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'Object Plans' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.
2017-10-19 14:26:47.22 spid85 SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'SQL Plans' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.
2017-10-19 14:26:47.22 spid85 SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'Bound Trees' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.
Memperbarui
Ada peningkatan versi mesin pada RDS dari 13.00.2164.0.v1 ke 13.00.4422.0.v1 tersedia. Meskipun diatur ke pemutakhiran versi minor-otomatis, sepertinya pembaruan ini tidak membuat kami diperbarui. Akan reboot dan instal akhir pekan ini untuk melihat apakah itu membantu.
sumber
Optimize for Ad-Hoc Workload
. Dibandingkan dengan 38G jika sekarang menggunakan 5 GI percaya ini tidak akan menjadi masalah untuk mempertimbangkan beban kerjaPersyaratan
Untuk menjalankan
DBCC FREEPROCCACHE
atauDBCC FREESYSTEMCACHE
akun Anda memerlukan izinALTER SERVER STATE
.Referensi
DBCC FREEPROCCACHE (Transact-SQL) (Microsoft Documents)
Gubernur Sumber Daya
Apakah AWS RDS memungkinkan pengaturan sumber daya gubernur? Jika ya, maka sintaksnya adalah:
Cari tahu apakah Anda memiliki kolam dengan:
Memverifikasi izin
Jalankan perintah berikut untuk menentukan apakah Anda memiliki izin ini:
Keterbatasan / Pembatasan
Ada beberapa batasan pada izin yang diberikan kepada administrator AWS RDS instance seperti yang didokumentasikan dalam artikel Microsoft SQL Server di Amazon RDS di bab Microsoft SQL Server Security
Berikut gambaran umum:
Pembatasan / pembatasan ini mungkin telah berubah sejak dokumen diterbitkan.
Sumber daya lainnya
Brent Ozar menulis artikel " SQL Server RDS " di mana ia mencatat bahwa ...
Dukungan Amazon
Jika akun Anda memiliki izin yang diperlukan dan Anda tidak dapat membebaskan cache, maka Anda mungkin ingin membuka tiket dukungan dengan Amazon.
sumber