Access
 sql >> Teknologi Basis Data >  >> RDS >> Access

Membuat dan Mengakses Database dan Tabel OLTP Dalam Memori

Ini adalah artikel kedua dari rangkaian artikel tentang SQL Server In-Memory OLTP.

Artikel pengantar — SQL Server In-Memory OLTP, secara singkat memperkenalkan dasar-dasar mesin Hekaton yang baru. Pada bagian ini, kita akan fokus pada latihan. Untuk lebih spesifik, kita akan melihat cara membuat database dan tabel yang dioptimalkan dalam Memori, dan juga, cara menilainya dengan bantuan T-SQL.

Prasyarat untuk mulai menggunakan database dengan memori yang dioptimalkan

OLTP dalam memori diinstal secara otomatis dengan edisi 64-bit Enterprise atau Developer dari SQL Server 2014 atau SQL Server 2016. SQL Server edisi 32-bit tidak menyediakan komponen OLTP Dalam Memori.

Jadi, jika Anda memiliki SQL Server edisi Pengembang 64-bit yang terinstal di komputer, Anda dapat mulai membuat database dan struktur data yang akan menyimpan data dengan memori yang dioptimalkan tanpa penyiapan tambahan.

Setiap database tunggal yang akan berisi tabel yang dioptimalkan memori harus berisi satu grup file MEMORY_OPTIMIZED_DATA. Filegroup ini berisi satu atau beberapa wadah. Setiap kontainer menyimpan data dan/atau file delta. SQL Server menggunakan file ini untuk memulihkan tabel yang dioptimalkan memori. Wadah dapat ditempatkan pada array disk yang berbeda,
mirip dengan filegroup FILESTREAM.

Sintaks untuk membuat grup file yang dioptimalkan memori hampir sama dengan grup file FILESTREAM tradisional, dengan beberapa perbedaan:

  1. Hanya satu grup file dengan memori yang dioptimalkan yang dapat dibuat untuk database.
  2. Opsi CONTAINS MEMORY_OPTIMIZED_DATA harus ditentukan secara eksplisit.

Anda dapat membuat filegroup dalam proses pembuatan database:

CREATE DATABASE InMemoryDemo
ON PRIMARY
(
NAME = N'InMemoryDemo',
FILENAME = N'D:\Data\InMemoryOLTPDemo.mdf'
),
FILEGROUP IMOFG CONTAINS MEMORY_OPTIMIZED_DATA
(
NAME = N'InMemoryDemo_Data',
FILENAME = N'D:\IMOFG\InMemoryDemo_Data.mdf'
)

Atau, Anda dapat menambahkan grup file MEMORY_OPTIMIZED_DATA ke database yang ada, lalu menambahkan file ke grup file tersebut.

-- Adding the containers
ALTER DATABASE
  DemoDB ADD FILE
  (
  NAME = 'DemoDB_Mod',
  FILENAME = 'D:\Data\DemoDB_Mod'
  )
  TO FILEGROUP DemoDB_Mod

Secara internal, In-Memory OLTP menggunakan mekanisme streaming berdasarkan teknologi FILESTREAM, yang diadaptasi dengan baik untuk akses I/O berurutan.

Membuat tabel dengan memori yang dioptimalkan

Sekarang, kita memiliki semua yang kita butuhkan untuk mulai membuat objek Memory-Optimized. Mari buat tabel Memory-Optimized.

Sintaks untuk membuat tabel yang dioptimalkan dalam memori sangat mirip dengan sintaks untuk membuat tabel berbasis disk. Namun, ada beberapa ekstensi dan batasan:

  1. Klausa MEMORY_OPTIMIZED =ON mengidentifikasi tabel sebagai dioptimalkan dalam memori.
  2. Tabel yang dioptimalkan dalam memori tidak mendukung semua tipe data yang didukung oleh tabel tradisional. Jenis data berikut tidak didukung:
  • offset tanggal-waktu
  • geografi
  • geometri
  • hierarki
  • versi baris
  • XML
  • varian_sql
  • Jenis Buatan Pengguna

Tabel dengan memori yang dioptimalkan dapat dibuat dengan nilai daya tahan berikut:SCHEMA_AND_DATA atau SCHEMA_ONLY. SCHEMA_AND_DATA adalah nilai default.
Jika Anda menentukan SCHEMA_ONLY, semua perubahan pada tabel tidak akan dicatat dan data tabel tidak disimpan di disk.

Setiap tabel dengan memori yang dioptimalkan harus berisi setidaknya satu indeks. Perhatikan bahwa batasan PRIMARY KEY secara implisit membuat indeks. Tabel yang dioptimalkan untuk memori yang tahan lama selalu memerlukan batasan PRIMARY KEY.

CREATE TABLE dbo.Person (
  [Name] VARCHAR(32) NOT NULL PRIMARY KEY NONCLUSTERED
 ,[City] VARCHAR(32) NULL
 ,[Country] VARCHAR(32) NULL
 ,[State_Province] VARCHAR(32) NULL
 ,[LastModified] DATETIME NOT NULL
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);

indeks gabungan dapat ditambahkan ketika semua kolom telah dibuat:

CREATE TABLE dbo.Person (
  [Name] VARCHAR(32) NOT NULL PRIMARY KEY NONCLUSTERED
 ,[City] VARCHAR(32) NULL
 ,[Country] VARCHAR(32) NULL
 ,[State_Province] VARCHAR(32) NULL
 ,[LastModified] DATETIME NOT NULL
 ,INDEX T1_INDX_C1C2 NONCLUSTERED ([Name], [City])
) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);

Saat Anda membuat tabel yang dioptimalkan dalam memori, mesin OLTP Dalam Memori membuat rutinitas DML untuk dapat mengakses tabel tersebut. Itu memuat rutinitas sebagai file DLL. Untuk operasi tertentu, SQL Server memanggil file DLL yang diperlukan.

Mengubah tabel dan indeks

Tidak mungkin MENGUBAH tabel sebelum SQL Server 2016. Untuk membuat perubahan skema, Anda harus menghapus dan membuat ulang tabel dalam memori.

Dalam rilis baru SQL Server, ALTER TABLE didukung sebagian.

SQL Server 2016 memberi Anda kemampuan untuk melakukan operasi offline:menambah dan menghapus (memodifikasi) kolom, indeks, dan batasan. Selain itu, sekarang dimungkinkan untuk bekerja dengan tabel dalam memori menggunakan desainer tabel SSMS atau editor tabel dbForge Studio untuk SQL Server.

Perhatikan bahwa ALTER TABLE membutuhkan pembangunan kembali tabel. Itulah mengapa Anda perlu memastikan bahwa Anda memiliki cukup memori sebelum menjalankan operasi ini. Selama operasi pembuatan ulang, setiap baris dimasukkan kembali ke tabel baru dan tabel tidak tersedia saat operasi ALTER sedang dilakukan.

Anda dapat memperkenalkan beberapa perubahan ke satu tabel dan menggabungkannya menjadi satu pernyataan ALTER TABLE. Anda dapat MENAMBAHKAN kolom, indeks, dan batasan dan Anda dapat MENGHAPUS kolom, indeks, dan batasan. Perhatikan bahwa Anda tidak dapat menggabungkan perintah ADD dan DROP bersama-sama dalam satu ALTER TABLE.

-- index operations
-- change hash index bucket count
ALTER TABLE dbo.TableName ALTER INDEX IX_Name REBUILD WITH (BUCKET_COUNT = 131072);
GO
-- add index
ALTER TABLE dbo.TableName ADD INDEX IX_Name NONCLUSTERED (ColName);
GO
-- drop index
ALTER TABLE dbo.TableName DROP INDEX IX_Name;
GO
-- add multiple indexes
ALTER TABLE dbo.TableName ADD INDEX IX_Name NONCLUSTERED (ColName),
 INDEX IX_Name2 NONCLUSTERED (ColName2);
GO
-- Add a new column and an index 
ALTER TABLE dbo.TableName ADD Date DATETIME, INDEX IX_Name NONCLUSTERED (ColName);
GO
-- Drop a column
ALTER TABLE dbo.TableName DROP COLUMN ColName;
GO

Jenis tabel dan variabel tabel

SQL Server 2016 memberi Anda kemampuan untuk membuat tipe tabel yang dioptimalkan memori yang dapat Anda gunakan saat menentukan variabel tabel:

CREATE TYPE TypeName
AS TABLE (
Col1 SMALLINT NOT NULL,
Col2 INT NOT NULL,
Col3 INT NOT NULL,
Col4 INT NOT NULL,
INDEX IX_Col1 NONCLUSTERED HASH (Col1)
WITH (BUCKET_COUNT = 131072),
INDEX IX_Col1 NONCLUSTERED (Col2))
WITH (MEMORY_OPTIMIZED = ON);
GO
DECLARE @VariableName TypeName;
GO

Variabel ini hanya disimpan dalam memori. Tabel dan tipe tabel yang dioptimalkan dalam memori menggunakan struktur data yang sama, sehingga akses data akan lebih efisien dibandingkan dengan variabel tabel berbasis disk.

Untuk detail lebih lanjut, silakan merujuk ke posting blog MSDN berikut:Meningkatkan kinerja tabel temp dan variabel tabel menggunakan optimasi memori

Ringkasan

In-Memory OLTP adalah teknologi yang relatif muda yang dirancang untuk bekerja dengan sistem OLTP yang besar dan sangat sibuk yang mendukung ratusan atau bahkan ribuan pengguna secara bersamaan. Itu diperkenalkan di SQL Server 2014 dan berkembang di SQL Server 2016.
Pada saat yang sama, teknologi berisi sejumlah batasan dan batasan.
Tidak semua fitur dan tipe data T-SQL didukung oleh memori- tabel yang dioptimalkan, tabel tersebut tidak boleh berisi baris yang melebihi 8060 byte, dan juga tidak mendukung
ROW-OVERFLOW dan penyimpanan LOB. Anda tidak dapat mengubah tabel dan indeks (di SQL Server 2014), setelah tabel dibuat.
Meskipun demikian, kami berharap versi selanjutnya dari In-Memory OLTP akan memiliki lebih sedikit batasan!

Baca Juga:

Menggunakan Indeks di Tabel yang Dioptimalkan Memori SQL Server


No
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat Kueri Pemilihan Sederhana dalam Tampilan Desain di Access 2016

  2. Cara Membuka Database dalam Mode Eksklusif di Access 2016

  3. 5 Jenis Perbaikan Basis Data

  4. Cara Mengelompokkan Laporan menurut Beberapa Bidang di Access 2016

  5. Tips Basis Data untuk Pemula