Menyimpan tabel data SQL Server dalam memori adalah fungsi yang disediakan oleh SQL Server, yang jarang terlibat dalam proses pengembangan sistem kecil secara umum. Dokumen terkait dikompilasi di sini untuk menunjukkan cara memasukkan semua data tabel di SQL Server ke dalam memori untuk mengimplementasikan database dalam memori dan meningkatkan kinerja waktu nyata.
1, DBCC PINTABLE
Menandai tabel untuk disematkan, yang berarti Microsoft SQL Server tidak menghapus halaman tabel dari
Sintaks
DBCC PINTABLE ( database_id , table_id )
Untuk menentukan ID database, gunakan fungsi DB_ID.
Untuk menentukan ID tabel, gunakan fungsi OBJECT_ID.
Mengomentari
DBCC PINTABLE tidak menyebabkan tabel dibaca ke dalam memori. Ketika halaman dalam tabel dibaca ke dalam cache oleh pernyataan Transact-SQL biasa, halaman tersebut ditandai sebagai halaman yang berada di memori. Halaman yang berada di memori tidak dihapus ketika SQL Server memerlukan ruang untuk membaca di halaman baru. SQL Server masih mencatat pembaruan pada halaman tersebut dan, jika perlu, menulis halaman yang diperbarui kembali ke disk. Namun, SQL Server menyimpan salinan halaman yang tersedia di cache hingga tabel dibuat non-residen menggunakan pernyataan DBCC UNPINTABLE.
DBCC PINTABLE paling baik digunakan untuk menyimpan tabel kecil yang sering direferensikan dalam memori. Baca halaman tabel kecil ke dalam memori sekaligus, dan semua referensi data di masa mendatang tidak perlu dibaca dari disk.
CATATAN DBCC PINTABLE dapat memberikan peningkatan kinerja, namun harus digunakan dengan hati-hati. Jika tabel besar berada, tabel tersebut awalnya menggunakan sebagian besar cache tanpa menyisakan cukup cache untuk tabel lain di sistem. Jika tabel yang dihosting lebih besar dari cache, tabel tersebut akan mengisi seluruh cache. Anggota peran server tetap sysadmin harus mematikan dan me-restart SQL Server dan kemudian membuat tabel non-residen. Menghosting terlalu banyak tabel menimbulkan masalah yang sama seperti menghosting tabel yang lebih besar dari cache.
Contoh:
Deklarasikan @db_id int, @tbl_id int
Gunakan DATABASE_NAME
Set @db_id = DB_ID('DATABASE_NAME')
Set @tbl_id = Object_ID('Department')
DBCC pintable (@db_id, @tbl_id)
dapat mengatur tabel Departemen menjadi memori- penduduk.
Deklarasikan @db_id int, @tbl_id int
Gunakan DATABASE_NAME
Set @db_id = DB_ID('DATABASE_NAME')
Set @tbl_id = Object_ID('Department')
DBCC UNpintable (@db_id, @tbl_id)
dapat menghapus tabel Departemen sebagai penghuni memori.
Anda dapat menggunakan perintah SQL berikut untuk mendeteksi eksekusi:
Select ObjectProperty(Object_ID('Department'),'TableIsPinned')
Jika hasil yang dikembalikan adalah 1: berarti tabel telah disetel untuk berada di memori 0: artinya bahwa itu belum diatur untuk disimpan di memori.
2, SP_TableOption
Menetapkan nilai opsi untuk tabel yang ditentukan pengguna. sp_tableoption dapat digunakan untuk mengaktifkan fitur teks dalam baris pada tabel dengan kolom teks, nteks, atau
gambar
sp_tableoption [ @TableNamePattern = ] 'tabel'
, [ @OptionName = ] 'nama_pilihan'
, [ @OptionValue = ] 'value'
di mana 'option_name' memiliki penggunaan berikut:
pintable -- Jika dinonaktifkan (default), ini menandai tabel sebagai tidak lagi menggunakan RAM. Saat diaktifkan, menandai tabel sebagai menggunakan RAM. (Tabel yang ditentukan dapat disimpan di memori)
Selain itu, kunci tabel pada pemuatan massal, kunci baris penyisipan, teks dalam baris, dan nilai opsional lainnya tidak melibatkan tabel tetap di memori. Untuk penggunaan tertentu, Anda dapat menanyakan Buku SQL Server Online.Nilai
Ini memiliki penggunaan berikut:
nama_pilihan diaktifkan (benar, aktif, atau 1) atau dinonaktifkan (salah, tidak aktif, atau 0)
Contoh:
EXEC sp_tableoption 'Department','pintable', 'true'
akan membuat tabel data Department berada di memori.
EXEC sp_tableoption 'Department','pintable', 'false'
akan membatalkan tabel data Department yang berada di memori
..
Anda dapat menggunakan perintah SQL berikut untuk mendeteksi eksekusi:
Select ObjectProperty(Object_ID('Department'),'TableIsPinned')
Jika hasil yang dikembalikan adalah 1: berarti tabel telah disetel untuk berada di memori 0: artinya bahwa itu belum diatur untuk disimpan di memori.
3. KesimpulanSaat
mengatur tabel data menjadi residen memori, tabel tersebut tidak benar-benar dibaca ke dalam memori sampai tabel tersebut diambil. Oleh karena itu, Anda dapat menggunakan instruksi SQL berikut untuk selanjutnya menyimpan tabel data Departemen di memori:
Pilih * Dari Departemen
Selain itu, Anda dapat menggunakan instruksi SQL berikut untuk dengan mudah menampilkan/mendeteksi semua tabel yang diatur untuk berada di memori dalam database:
SELECT * FROM INFORMATION_SCHEMA.Tables
WHERE TABLE_TYPE = 'BASE TABLE'
AND OBJECTPROPERTY(object_id(TABLE_NAME), 'TableIsPinned' ) > 0