Thursday, June 23, 2011

MySQL Get Size Database and Table

Dalam aktivitas monitoring database untuk mengetahui kondisi database pada umumnya memerlukan informasi tentang ukuran database dan tabel didalamnya. Pada Database MySQL Server untuk mendapatkan informasi ukuran database dan tabel bisa didapatkan didatabase MySQL bernama information_schema.

Untuk dapat akses ke database information_schema perlu login ke database MySQL Server sebagai Root, seperti yang ditunjukan pada contoh dibawah ini.
mysql -uroot -ppass
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 49832
Server version: 5.1.47-MariaDB-log (MariaDB - http://mariadb.com/)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
Database yang digunakan oleh penulis dalam posting ini adalah MariaDB 5.1.47 yang merupakan turunan dari database MySQL. Perintah yang di posting ini akan berjalan dengan baik pada Database Maria maupun MySQL.

Setelah Anda login sebagai root ke database MySQL Server maka dapat melakukan berbagai perintah dalam monitoring database dan table seperti yang akan dijelaskan dibawah ini.

1. Monitoring Ukuran Setiap Database, adalah sebuah script yang akan menampilkan seluruh database berserta ukurannya (MB) yang ada pada MySQL Server.

Contoh
SELECT table_schema as "Nama Database", SUM(data_length + index_length) / 1024 / 1024 as "Ukuran (MB)" FROM information_schema.tables 
GROUP BY table_schema ORDER BY SUM(data_length + index_length) DESC ;
+---------------------------------+---------------+
| Nama Database                   | Ukuran (MB)   |
+---------------------------------+---------------+
| db_elfaoptimasi                 | 1212.59375000 |
| net_staging                     |  150.07911301 |
| dbrisma_solok_demo_new_psb2011  |   62.47917175 |
| psb_2011_test                   |   61.81703568 |
| cdc                             |   52.53660107 |
| db_career_temp                  |   52.49228764 |
| groovel                         |   51.03194809 |
| net_live                        |   50.62464905 |
| dbrisma_solok_dev_psb2011       |   48.78892517 |
| dbrisma_solok_test_new          |   48.75767517 |
| net_post                        |   45.17187500 |
Table diatas adalah contoh yang menunjukan ukuran (MB) dari seluruh database.

2. Monitoring Ukuran Setiap Table pada sebuah database, adalah sebuah script yang akan menampilkan seluruh table berserta Jumlah Baris, Ukuran data (MB) dan engine yang ada pada sebuah database.

Pola
SELECT table_name as "Nama Table",engine as "Engine",table_rows as "Jumlah Baris",data_length as "Ukuran Data (Byte)" 
FROM information_schema.tables 
where table_schema = '[NAMA  DATABASE]' 
order by data_length desc, table_rows;
Contoh:
SELECT table_name as "Nama Table",engine as "Engine",table_rows as "Jumlah Baris",data_length as "Ukuran Data (Byte)" 
FROM information_schema.tables 
where table_schema = 'dbrisma_solok_demo_new_psb2011' 
order by data_length desc, table_rows;
+-------------------------------------------+--------+--------------+--------------------+
| Nama Table                                | Engine | Jumlah Baris | Ukuran Data (Byte) |
+-------------------------------------------+--------+--------------+--------------------+
| blob_foto                                 | InnoDB |         2327 |           25755648 |
| sp_debug                                  | MyISAM |        15622 |            7687272 |
| siswa                                     | InnoDB |        13509 |            3686400 |
| siswa_fulltext                            | MyISAM |        13365 |            1934152 |
| simpson_docs                              | InnoDB |           71 |            1589248 |
| pascapsb_message                          | InnoDB |          541 |            1589248 |
| kurikulum_skmp                            | InnoDB |         2058 |            1589248 |
| temp_nisn_excel                           | InnoDB |         9117 |            1589248 |
| siswa_info_fisik                          | InnoDB |        11901 |            1589248 |
| blob_application_binaries                 | InnoDB |            1 |             524288 |
| pegawai                                   | InnoDB |         2449 |             507904 |
| simpson_sarana                            | InnoDB |         4785 |             475136 |
| rangga_komponen_kredit                    | InnoDB |         5718 |             458752 |
| sys_user                                  | InnoDB |          452 |             376832 |
| siswa_r_sekolah                           | InnoDB |         3471 |             360448 |
Pada table di atas menunjukan informasi Jumlah Baris, Ukuran data (MB) dan engine dari semua tabel yang ada pada database contoh bernama dbrisma_solok_demo_new_psb2011

3. Detail Infomasi sebuah table, adalah sebuah script yang akan menampilkan informasi detail dari sebuah table.

Pola
SHOW TABLE STATUS FROM [NAMA DATABASE] LIKE '[NAMA TABLE]' \G;
Contoh
SHOW TABLE STATUS FROM dbrisma_solok_demo_new_psb2011 LIKE 'sp_debug' \G;
*************************** 1. row ***************************
           Name: sp_debug
         Engine: MyISAM
        Version: 10
     Row_format: Dynamic
           Rows: 15622
 Avg_row_length: 492
    Data_length: 7687272
Max_data_length: 281474976710655
   Index_length: 162816
      Data_free: 0
 Auto_increment: 15623
    Create_time: 2011-06-17 13:23:33
    Update_time: 2011-06-23 15:12:11
     Check_time: 2011-06-23 08:51:30
      Collation: utf8_unicode_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)
Table diatas menunjukan informasi detail dari sebuah table yang bernama sp_debug dari database dbrisma_solok_demo_new_psb2011. Berikut ini adalah beberapa penjelasan dari informasi diatas.
  • Name adalah nama table yang diperiksa.
  • Engine adalah storage engine yang digunakan pada table misalkan myisam atau innodb.
  • Rows menunjukan jumlah baris/record yang terdapat pada table tersebut.
  • Avg_row_length menunjukan ukuran byte rata-rata per baris/record.
  • Data_length menunjukan besar/ukuran data dalam byte.
Apabila ingin merubah satu byte ke MB dapat menggunakan cara berikut.
  • Data_length: 7687272  -> maka (7687272 / 1024) / 1024 = 7.3 MB

2 comments:

  1. Mas mau nanya. Untuk memasukan query tersebut di phpmyadmin dibagian mana ya ? Lalu jika saya hanya pengguna dari suatu hosting apakah bisa mengakses command tersebut?
    Ataukah hanya berlaku untuk administator (pemilik hosting) ?

    Saya masih awam soal phpmyadmin. Terima Kasih

    ReplyDelete