Monitoring SQL Server Space
How do we monitor our SQL Server file data? Acknowledge the size and the growth is an important thing for all of us. Knowing the condition of the machine is critical in term of Database Server need a specific condition in its physical infrastructure – the harddisk/physical device should be in a sufficient free space. The growth of the database and its current used space is also very critical to acknowledge because it will provide us knowledge how we interact with the data growth, decide, and how we maintain them. Not only critical for the database itself, but also for the Operating System as well. You can imagine if one of our database files growing in 30MB per daily, and someday in the future it hits Windows Server with hundreds MB left in space? How come??
Of course, every database is living on its own speed. The very active growth is everywhere as well as the ordinary one, as you can mention any retail or banking database or your sms content business which growing in 100 thousand records daily. And in other plant, the medical record of certain hospital may require no more than thousand rows per day.
We should also take care of the ratio between the maximum capacity and the growth per day. The blue one is the most acceptable thing. The orange is in danger speed.
Kriteria filter yang berasal dari field data tabel pendukung lainnya.
Semisal kita ingin mencari seseorang yang berada di sembarang (nama) departemen, dimana tabel utama mempunyai data yang tidak mempunyai detail atau relasi di tabel sekunder, dan tabel sekunder ini berelasi dengan tabel ketiga tempat dimana kolom pencarian berada. Bagaimana Querynya?
Misal tabelnya ialah:
m_individu
m_individuemploy
m_department
Mungkin kita akan tergesa untuk memberikan klausa seperti ini:
Departmentname like '%'
Yang menjadi masalah kolom Departmentname berada di m_Department sehingga klausa ini tidak selalu membawa hasil yang memuaskan, dalam hal table m_individu sebagai tabel utama tidak selalu mempunyai data pasangannya di m_individuemploy (one to many relationship).
Untuk menyelamatkannya, Anda tinggal menambahkan fungsi isnull berikut ini:
isnull(c.Departmentname,'') like '%'
Simak data berikut ini di m_individu:
dan simak tabel m_individuemploy, berikut ini. Tampak bahwa data tidak mengandung individu dengan memberid m000000002.
Simak data m_department berikut ini:
Semisal kita ingin menampilkan semua data di tabel m_individu dari semua departmen,
Dengan query pertama hasilnya akan seperti ini:
Tampak bahwa kita kehilangan baris data dari ‘arif’, mengapa? Karena informasi data arif (m00000000002) tidak ada di tabel m_individuemploy.
Relasi LEFT OUTER JOIN pun tidak bisa menampilkan data tersebut. Memang, apabila klausa where dihilangkan maka seluruh data tampil. Tetapi dalam kasus ini diasumsikan kita membutuhkan klausa nama departemen tersebut. Apabila kita menggunakan klausa pertama, hasilnya akan seperti di atas. Untuk memperbaikinya kita gunakan klausa kedua, sehingga seluruh data yang diinginkan akan tampil.
Sehingga keseluruhan query akan tampak seperti ini
SELECT a.[memberid] ,[firstname], [lastname], [midname],
case [sex] when 1 then 'male' else 'female' end as gender,
c.departmentname, d.position, d.employeeid,
[maritalstatus], [dob] FROM [m_individu] a
left outer JOIN m_individuemploy d on a.memberid = d.memberid
left outer JOIN m_department c on d.departmentid = c.departmentid
WHERE
isnull(c.Departmentname,'') like '%'
Dan hasilnya akan seperti ini:
Jadi, hati-hati dengan cara pemasukan kolom kriteria yang bukan dari tabel utama.
wid, june 2008