Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Membersihkan Sambungan Ketergantungan Sql yang Lapuk dengan Cekap dalam Pelayan SQL?
Mengurus Sambungan SqlDependency untuk Prestasi Pelayan SQL Optimum
Pengurusan SqlDependency
objek yang tidak cekap dalam SQL Server boleh menyebabkan kebocoran memori dan kesesakan prestasi. Artikel ini memperincikan strategi untuk membersihkan sumber ini dengan berkesan selepas pemprosesan acara.
Masalahnya: Mengumpul Sumber
Menggunakan SqlDependency
mencipta kumpulan perbualan dan titik akhir dalam pangkalan data. Sumber ini terkumpul dari semasa ke semasa, memori yang mungkin meletihkan, terutamanya dalam edisi SQL Server Express.
Penyelesaian Pembersihan Pangkalan Data
Skrip SQL berikut mengenal pasti dan mengalih keluar titik akhir perbualan yang tidak aktif, membebaskan memori:
<code class="language-sql">DECLARE @ConvHandle uniqueidentifier DECLARE Conv CURSOR FOR SELECT CEP.conversation_handle FROM sys.conversation_endpoints CEP WHERE CEP.state = 'DI' or CEP.state = 'CD' OPEN Conv; FETCH NEXT FROM Conv INTO @ConvHandle; WHILE (@@FETCH_STATUS = 0) BEGIN END CONVERSATION @ConvHandle WITH CLEANUP; FETCH NEXT FROM Conv INTO @ConvHandle; END CLOSE Conv; DEALLOCATE Conv;</code>
Had Kebergantungan Sql
Kelas SqlDependency
standard mempunyai had:
Alternatif Unggul: SqlDependencyEx
SqlDependencyEx
, perpustakaan sumber terbuka, menyediakan keupayaan yang dipertingkatkan:
<code class="language-csharp">int changesReceived = 0; using (SqlDependencyEx sqlDependency = new SqlDependencyEx( TEST_CONNECTION_STRING, TEST_DATABASE_NAME, TEST_TABLE_NAME)) { sqlDependency.TableChanged += (o, e) => changesReceived++; sqlDependency.Start(); // Simulate table changes. MakeTableInsertDeleteChanges(changesCount); // Allow time for change notification. Thread.Sleep(1000); } Assert.AreEqual(changesCount, changesReceived);</code>
Dengan menggunakan prosedur pembersihan pangkalan data atau berhijrah ke SqlDependencyEx
, anda boleh mengurus sumber SqlDependency
dengan berkesan, mencegah isu memori dan mengoptimumkan prestasi SQL Server.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membersihkan Sambungan Ketergantungan Sql yang Lapuk dengan Cekap dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!