Pengantar tabel yang dioptimalkan memori
Tabel yang dioptimalkan memori adalah tabel yang dibuat menggunakan CREATE TABLE (Transact-SQL).
Secara default, tabel yang dioptimalkan memori sepenuhnya persisten. Seperti transaksi pada tabel berbasis disk (tradisional), transaksi pada tabel yang dioptimalkan memori sepenuhnya atomik, konsisten, terisolasi, dan persisten (ACID). Tabel yang dioptimalkan memori dan prosedur tersimpan yang dikompilasi secara native hanya mendukung subset fitur Transact-SQL.
Mulai SQL Server 2016 dan di Azure SQL Database, tidak ada batasan pada kolase atau halaman kode khusus OLTP dalam memori.
Memori utama tabel yang dioptimalkan memori adalah memori utama. Baca baris dari tabel dari memori dan tulis baris tersebut ke memori. Salinan lain dari data tabel disimpan di disk, tetapi hanya untuk tujuan persistensi. Untuk informasi selengkapnya tentang tabel persisten, lihat Membuat dan mengelola penyimpanan objek untuk pengoptimalan memori. Data dalam tabel yang dioptimalkan memori hanya dibaca dari disk selama pemulihan database (misalnya, setelah reboot server).
Untuk peningkatan performa yang lebih besar, OLTP dalam memori mendukung tabel persisten dengan latensi persisten transaksional. Transaksi persisten yang tertunda disimpan ke disk segera setelah transaksi dilakukan dan kontrol dikembalikan ke klien. Sebagai imbalan untuk peningkatan kinerja, transaksi yang dilakukan yang tidak disimpan ke disk hilang jika terjadi crash server atau failover.
Selain tabel default yang dioptimalkan memori persisten, SQL Server mendukung tabel yang dioptimalkan memori nonpersisten yang tidak direkam, dan datanya tidak disimpan di disk. Ini berarti bahwa transaksi pada tabel ini tidak memerlukan IO disk apa pun, tetapi jika terjadi kegagalan server atau failover, data akan hilang.
OLTP dalam memori terintegrasi dengan SQL Server untuk memberikan pengalaman tanpa batas di semua aspek seperti pengembangan, penerapan, pengelolaan, dan dukungan. Database dapat berisi objek dalam memori dan objek berbasis disk.
Baris dalam tabel yang dioptimalkan memori memiliki versi. Ini berarti bahwa setiap baris dalam tabel dapat memiliki beberapa versi. Semua versi baris dipertahankan dalam struktur data tabel yang sama. Penerapan versi baris digunakan untuk mengaktifkan pembacaan dan penulisan bersamaan ke baris yang sama. Untuk informasi selengkapnya tentang pembacaan dan penulisan bersamaan ke baris yang sama, lihat Hal-hal di Tabel Pengoptimalan Memori.
Perkiraan langkah dan batasan penggunaan
Langkah:
(1) Buat database dan MEMORY_OPTIMIZED_DATA grup file (ubah database tambahkan grup file, setiap database hanya dapat memiliki satu grup file MEMORY_OPTIMIZED_DATA!!) ) (2) Tambahkan folder ke grup file untuk menyimpan file data (harap jangan membuat folder ini terlebih dahulu, gunakan alter database add file() ke filegroup) (3) Buat tabel yang dioptimalkan memori persisten/non-persisten (SQL Server 2014 dipertahankan secara default), dan Anda juga harus menentukan kunci utama berdasarkan indeks hash non-agregat. Indeks hash adalah satu-satunya jenis indeks yang didukung dalam tabel yang dioptimalkan memori. (4) Gunakan prosedur tersimpan yang dikompilasi secara lokal: Tabel yang dioptimalkan memori mendukung prosedur tersimpan yang dikompilasi secara lokal, selama prosedur tersimpan tersebut hanya mereferensikan tabel yang dioptimalkan memori.
Batas:
(1) Tabel yang dioptimalkan memori harus ditempatkan di bawah database dengan grup file CONTAINS MEMORY_OPTIMIZED_DATA. (2) Tabel yang dioptimalkan memori harus menentukan kunci primer berdasarkan indeks hash non-agregat, dan tabel harus ditentukanPemeriksaan kunci asing atau batasan tidak didukung (3) Tabel pengoptimalan memori harus memiliki memori yang cukup, jika tidak, operasi seperti menyisipkan pembaruan akan gagal. (4) SQL Server 2014 memiliki banyak batasan pada tabel ini. Misalnya, mereka tidak mendukung kunci asing atau pemeriksaan batasan (yang terasa mirip dengan mesin penyimpanan memori MySQL), merekaBidang IDENTITY atau pemicu DML juga tidak didukung。
Gunakan tutorial
Versi database adalah sebagai berikut:
Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64) 25 Sep 2024 17:34:41 Hak Cipta (C) 2022 Microsoft Corporation Enterprise Edition: Lisensi berbasis inti (64-bit) di Linux (Ubuntu 22.04.4 LTS) <X64>
Pertama, buat database dan grup file dengan perintah berikut:
Jika Anda tidak membuat grup yang dioptimalkan memori, kesalahan akan dilaporkan saat Anda membuat tabel yang dioptimalkan memori:Tidak dapat membuat tabel yang dioptimalkan memori. Untuk membuat tabel yang dioptimalkan memori, database harus memiliki MEMORY_OPTIMIZED_FILEGROUP yang online dan memiliki setidaknya satu kontainer.
Buat dua tabel yang dioptimalkan memori untuk diuji, satu persisten dan satu non-persisten, dengan perintah berikut:
Tabel pengoptimalan memori memiliki dua opsi (DURABILITY = SCHEMA_AND_DATA), (DURABILITY = SCHEMA_ONLY) Tabel daya tahan: DAYA TAHAN =SCHEMA_AND_DATA Tabel non-persisten: DAYA TAHAN =SCHEMA_ONLY
Pengujian dimasukkan secara terpisah ke dalam tabel pengoptimalan memori100.000 artikel(sebenarnya 100002 item), perintahnya adalah sebagai berikut:
Persistensi membutuhkan waktu 28 detik untuk menyala dan 1 detik tanpa ketekunan。
Referensi:
Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat. |