Fine Tuning MS SQL Server 2005

Ketika arsitek software di tempatku bekerja memintaku untuk melakukan fine tuning pada server database MS SQL Server 2005, dalam pikiranku langsung bermunculan puluhan ide, dan puluhan pertanyaan, dan beberapa kekhawatiran.

Lho kenapa khawatir ? Ada sebuah kutipan yang membuatku berpikir dua kali sebelum melakukan fine tuning

“SQL Server uses automatic configuration tuning and it is extremely rare that configuration settings (especially advanced settings) need any changes. Generally, do not make a SQL Server configuration change without overwhelming reason and not without careful methodical testing to verify the need for the configuration change. You must establish a baseline before the configuration change so that you can measure the benefit after the change.”

Hal yang pertama saya baca tentu adalah halaman “How to determine proper SQL Server Configuration Settings” dari microsoft.

Beberapa pilihan performance boost dapat dilakukan melalui beberapa fasilitas, seperti [Priority Boost]. Walaupun ini tidak dianjurkan, tapi kalau maksa tinggal lakukan perintah sbb.

sp_configure ‘show advanced options’, 1
GO
RECONFIGURE;
GO
sp_configure ‘priority boost’, “1”;
GO
RECONFIGURE;
GO

– Affinity Mask

Beberapa tips untuk melakukan boost pada SQL Server dapat dilihat di sini dan di sini dan di sini.

Bagi para DBA mungkin perlu membuat check list. Salah satunya ada di sini, atau optimasinya di sini.

To Be Continue…..

Perubahan struktur pada tabel besar MS SQL Server 2005

Manakala sebuah tabel berukuran besar (baik karena jumlah field yang banyak, maupun jumlah record yang jutaan), maka tabel tersebut akan sulit dirubah melalui SQL Server Management Studio.

Biasanya SQL Server Management Studio, akan mengalami time-out dan menghasilkan pesan error seperti ini :

SQLServer2005Error

‘xxx’ table
– Unable to delete relationship ‘FK_xxx_yyy’.
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. Could not drop constraint. See previous errors.

Hal ini akan lebih parah terjadi manakala banyak user yang sedang mengakses tabel tersebut, atau tabel tersebut berelasi dengan banyak tabel lain.

Maka solusinya adalah dengan merubah struktur tabel mempergunakan T-SQL seperti di bawah ini :

Untuk merubah field size dapat digunakan perintah sebagai berikut :

1. Merubah ukuran field (hanya angka yang dirubah)
ALTER TABLE tbtWisuda ALTER COLUMN tbtWisuda varchar (50)

2. Menambahkan default
alter table dbo.CustomerReport alter column rundate default getutcdate()

3. Menghapus constraint
alter table dbo.CustomerReport drop constraint df_CustomerReport_rundate

4. Menambahkan constraint
alter table dbo.CustomerReport add constraint df_CustomerReport_rundate default getutcdate() for rundate

5. Menambahkan foreign key
ALTER TABLE tbtTagihBankFlat ADD CONSTRAINT FK_TagihanFlatMataUang FOREIGN KEY (tbfMataUang) REFERENCES tbrMataUang(tbrMUKode)

6. Hapus foreign key
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders

6. Menambah contrain unique
ALTER TABLE

ADD CONSTRAINT UNIQUE()

7. Not Null
ALTER TABLE

ALTER COLUMN NOT NULL

8. Memberikan hak akses
GRANT { SELECT | EXECUTE } ON [ sys.]system_object TO principal

9. Menambah field
ALTER TABLE [Table Name] ADD [Field Name] [Data Type]

Membuat sebuah field unique pada SQL Server 2005

Seorang admin database pasti mengetahui bahwa sebuah field yang menjadi primary key pasti memiliki dua syarat yaitu
– Unique (tak ada yang sama)
– Not Null (tidak kosong)

Lantas bagaimana kalau dibutuhkan sebuah field yang bernilai unique tapi boleh null ?

1) Buka [Enterprise Manager] kemudian right click Nama Tabel dan pilih [Design Table]
2) Right Click pada kolom yang ingin anda jadikan unique.
3) Click New … Key in Index Name … Select the Field that you want to Index under Column_name and select an Order
4) Check Create UNIQUE and select Contstraint, then Close

Jika kolom tersebut sudah berisi data, dan datanya mengandung duplikat, maka desain tabel yang anda buat tidak akan bisa disimpan, sampai anda membuat nilai yang ada pada kolom tersebut unique.

Atau jika anda lebih suka TSQL, maka statement ini dapat dicoba

ALTER TABLE MyTable
ADD CONSTRAINT IX_MyColumn UNIQUE (MyColumn)

Pranata Luar :
SQL Authority.
Mempergunakan contraint.
Syntax Statement ALTER TABLE.