Friday, March 18, 2011

Row versus Page Compression

Upaya kompresi Row untuk mengurangi ruang disk dengan menyimpan semua data fixed-panjang jenis sebagai variabel panjang, termasuk tipe data numerik. Hal ini dapat mengurangi ukuran setiap baris individu, yang memungkinkan Anda agar sesuai dengan beberapa baris pada sebuah halaman. Row kompresi metadata menggunakan kompresi untuk menggambarkan offset setiap nilai dalam baris. Namun, hal ini menghemat ruang tidak selalu tercapai. Misalnya, ketika nilai-nilai yang disimpan dalam kolom tipe tetap panjang data mengkonsumsi seluruh panjang kolom, tidak ada menghemat ruang terjadi. Bahkan, dalam skenario ini lebih banyak ruang digunakan sebagai biaya overhead metadata kompresi masih harus ditulis ke halaman.

Row kompresi tidak berpengaruh pada jenis data terkecil yang mungkin seperti tinyint, smalldatetime, tanggal dan uniqueidentifier tipe data. Hal ini juga tidak berpengaruh pada tipe data yang sudah disimpan sebagai variabel-panjang seperti varchar, nvarchar, dan varbinary. Akhirnya, khusus tipe data seperti teks, gambar, xml, meja, sql_variant, dan kursor tidak terpengaruh dengan tingkat kompresi baris. Bit tipe data selalu negatif terpengaruh karena, bersama-sama dengan overhead metadata, itu memerlukan empat bit penyimpanan sebagai lawan byte satu biasanya dibutuhkan untuk up-to kolom-delapan-bit. Kompresi Page menerapkan teknik kompresi berikut ke setiap page data :
  • Row compression
  • Prefix compression
  • Dictionary compression

Maintaining Data Files

Database objek, seperti tabel dan indeks, secara fisik disimpan dalam file data terkadang dibeberapa filegroups. Dalam database produksi, Anda harus melakukan pemeliharaan atas file data, serta mengoptimalkan kinerja database dan ruang disk yang digunakan.
Teknik kunci untuk mengoptimalkan penggunaan ruang disk adalah data kompresi, kolom jarang,dan menyusutnya file-file database dan log menggunakan Database Perintah (DBCC) DBCC SHRINKFILE. Kinerja dioptimisasi dengan penciptaan dan pemeliharaan dari indeks. Pada bagianini, anda akan mempelajari bagaimana menggunakan kompresi data, menjaga indeks, danmenggunakan dbcc perintah untuk memvalidasi dan memperbaiki kesalahan dalam databaseAnda
.

Implementing Data Compression
Untuk mengaktifkan kompresi di atas meja atau indeks, gunakan CREATE TABLE atau CREATE INDEKS pernyataan dengan DATA_COMPRESSION = ROW|PAGE. Jika Anda
memungkinkan kompresi pada tabel yang ada atau indeks, gunakan DATA_COMPRESSION ini
opsi dengan ALTER TABLE atau ALTER INDEX pernyataan. Mengaktifkan kompresi
akan menyebabkan membangun kembali objek dan karena itu, sebuah operasi yang sangat memakan waktu dan sumber daya. Mengaktifkan data kompresi di atas meja tidak akan berpengaruh pada indeks non bahwa meja itu mengelompok. Setiap non clustered index dapat dikompresi secara terpisah
.


Example

CREATE TABLE [database_name].[schema_name].table_name
() WITH (DATA_COMPRESSION = ROW | PAGE)

Example 7.3 Enabling Data Compression on an Existing Table—Syntax
ALTER TABLE [database_name].[schema_name].table_name
REBUILD WITH (DATA_COMPRESSION = ROW | PAGE | NONE)

Example 7.4 Enabling Data Compression on a New Nonclustered Index—Syntax
CREATE NONCLUSTERED INDEX index_name
ON table_name ()
WITH (DATA_COMPRESSION = ROW | PAGE)

Example 7.5 Enabling Data Compression on an Existing Nonclustered
Index—Syntax
ALTER INDEX index_name
ON table_name
REBUILD WITH (DATA_COMPRESSION = ROW | PAGE | NONE)

Example 7.6 Enabling Data Compression on a Partitioned Table—Syntax
ALTER TABLE partitioned_table_name
REBUILD PARTITION = 1 WITH (DATA_COMPRESSION = ROW | PAGE | NONE)

Thursday, March 17, 2011

Data Collation

Collation adalah seperangkat aturan untuk menyimpan, menyortir, dan membandingkan data teks.Collation mempengaruhi operasi database yang paling. Collation dapat mempengaruhi hasil query,kemampuan untuk data impor dan ekspor, serta cadangan dan mengembalikan operasi .

Collation Sebuah mendefinisikan pola bit yang mewakili setiap karakter dalam data set.
Biasanya, nama collation dimulai dengan mengatur bahasa atau karakter, misalnya Latin1_, Thai100_, Arabic100_. Kolasi juga mendefinisikan aturan berikut tentang perbandingan data dan pengurutan:
  • Case sensitivity : pilihan ini mendefinisikan jika perbandingan atau semacam ini terjadi sensitif. Misalnya, perbandingan case sensitive 'Mobil' = 'mobil'. akan menghasilkan dengan benar, Bila diurutkan, 'mobil' akan selalu datang sebelum 'Mobil'.
  • Accent sensitivity: Opsi ini mendefinisikan jika perbandingan itu aksen sensitif. Sebagai contoh, dalam sebuah perbandingan aksen sensitif 'Valentine' tidak akan sama dengan 'Valentine'.
  • Kanatype sensitivity : Opsi ini mendefinisikan jika perbandingan sensitif terhadap jenis karakter kana Jepang digunakan. Dua jenis karakter kana yang tersedia: Hiragana dan Katakana. Ketika sebuah perbandingan kana-insensitive, SQL Server akan mempertimbangkan Hiragana setara dan karakter Katakana yang setara untuk kepentingan pengurutan.
  • Width sensitivity : Opsi ini mendefinisikan jika dibandingkan memperlakukan karakter digambarkan sebagai sebuah byte tunggal sebagai setara dengan karakter yang sama direpresentasikan sebagai byte ganda.
CREATE DATABASE ExampleDB2
COLLATE Latin1_General_CS_AS
GO
USE ExampleDB2
GO
CREATE TABLE TeamMembers
(MemberID int PRIMARY KEY IDENTITY,
MemberName nvarchar(50) COLLATE Latin1_General_CI_AI)
GO
INSERT TeamMembers(MemberName)
VALUES
(N'Valentine'),
(N'Peter'),
(N'Matthéw'),
(N'valentine'),
(N'Matthew')
GO


SELECT * FROM TeamMembers ORDER BY MemberName
-- Results:
-- MemberID MemberName
-- ----------- --------------------------------------------------
-- 3 Matthéw
-- 5 Matthew
-- 2 Peter
-- 1 Valentine
-- 4 valentine

SELECT * FROM TeamMembers ORDER BY MemberName COLLATE Latin1_General_CS_AS
-- Results:
-- MemberID MemberName
----------- --------------------------------------------------
-- 5 Matthew
-- 3 Matthéw
-- 2 Peter
-- 4 valentine
-- 1 Valentine

SELECT * FROM TeamMembers WHERE MemberName = 'Matthew'
-- Results:
-- MemberID MemberName
-- ----------- --------------------------------------------------
-- 3 Matthéw
-- 5 Matthew