Saya sedang menyelidiki manfaat pemutakhiran dari MS SQL 2012 hingga 2014. Salah satu nilai jual besar SQL 2014 adalah tabel yang dioptimalkan memori, yang tampaknya membuat kueri super cepat.
Saya telah menemukan bahwa ada beberapa batasan pada tabel yang dioptimalkan memori, seperti:
- Tidak ada
(max)
bidang berukuran - Maksimal ~ 1KB per baris
- Tanpa
timestamp
bidang - Tidak ada kolom yang dihitung
- Tidak ada
UNIQUE
kendala
Ini semua memenuhi syarat sebagai gangguan, tetapi jika saya benar-benar ingin bekerja di sekitar mereka untuk mendapatkan manfaat kinerja, saya dapat membuat rencana.
Penendang sesungguhnya adalah kenyataan bahwa Anda tidak dapat menjalankan ALTER TABLE
pernyataan, dan Anda harus melalui omong kosong ini setiap kali Anda menambahkan bidang ke INCLUDE
daftar indeks. Selain itu, tampaknya Anda harus menutup pengguna dari sistem untuk membuat perubahan skema ke tabel MO pada DB langsung.
Saya menemukan ini benar-benar keterlaluan, sejauh saya benar-benar tidak percaya bahwa Microsoft dapat menginvestasikan begitu banyak modal pengembangan ke fitur ini, dan membiarkannya begitu tidak praktis untuk dipertahankan. Ini membawa saya pada kesimpulan bahwa saya pasti mendapatkan ujung tongkat yang salah; Saya pasti salah paham tentang tabel yang dioptimalkan memori yang membuat saya percaya bahwa jauh lebih sulit untuk mempertahankannya daripada yang sebenarnya.
Jadi, apa yang saya salah pahami? Sudahkah Anda menggunakan tabel MO? Apakah ada semacam saklar atau proses rahasia yang membuatnya praktis untuk digunakan dan dipelihara?
sumber
Anda tidak dapat mengklik kanan tabel yang dioptimalkan memori, untuk menarik desainer , dan menambahkan kolom baru sesuka Anda, dari dalam Sql Server Management Studio. Anda juga tidak bisa mengklik dalam nama tabel sebagai cara mengganti nama tabel. (SQL 2014 pada tulisan saya ini.)
Sebaliknya, Anda bisa mengklik kanan tabel, dan skrip perintah buat ke jendela kueri baru. Perintah buat ini dapat diubah dengan menambahkan kolom baru apa pun.
Jadi, untuk memodifikasi tabel, Anda bisa menyimpan data dalam tabel baru, tabel temp, atau variabel tabel. Kemudian Anda bisa menjatuhkan dan membuat kembali tabel dengan skema baru, dan akhirnya menyalin kembali data aktual . Game 3 container shell ini hanya sedikit kurang nyaman untuk kebanyakan kasus penggunaan.
Tapi, Anda tidak perlu repot dengan tabel Memory Optimized jika tidak ada masalah kinerja yang Anda coba selesaikan.
Kemudian, Anda harus mempertimbangkan jika keterbatasan dan penyelesaiannya sepadan untuk kasus penggunaan Anda. Apakah Anda memiliki masalah kinerja? Sudahkah Anda mencoba yang lain? Apakah ini akan meningkatkan kinerja Anda 10-100x? Menggunakannya atau tidak menggunakannya kemungkinan akan menjadi sedikit tidak ada otak.
sumber
Anda dapat menggunakan OLTP Dalam Memori di Server Operasional tanpa masalah besar. kami menggunakan teknologi ini di perusahaan Perbankan dan Pembayaran,
Secara umum kita dapat menggunakan tabel yang dioptimalkan memori saat beban kerja terlalu tinggi. dengan menggunakan OLTP Dalam Memori, Anda dapat mencapai kinerja yang lebih baik hingga 30X! Microsoft memperbaiki sebagian besar batasan ini di SQL Server 2016 & 2017. tabel yang dioptimalkan memori memiliki arsitektur yang sangat berbeda dibandingkan dengan tabel berbasis Disk.
tabel yang dioptimalkan memori adalah dua jenis. meja tahan lama dan meja tak tertahankan. Tabel Durable dan Non-Durable menyimpan data tabel yang tersimpan dalam memori. Tabel tahan lama Furthemore menyimpan data tentang Disk untuk Data Pemulihan dan Skema. sebagian besar skenario operasional kita harus menggunakan tabel tahan lama karena kehilangan data sangat penting di sini. dalam beberapa skenario misalnya pemuatan dan Caching ETL kita bisa menggunakan tabel nondurable.
Anda dapat menggunakan ebook ini dan mempelajari cara menggunakan teknologi ini:
Kalen Delaney: https://www.red-gate.com/library/sql-server-internals-in-memory-oltp
Dmitri Korotkevitch: https://www.apress.com/gp/book/9781484227718
sumber