Optimasi Query MySQL dan MariaDB – eBook

Pada awalnya, query dapat dieksekusi dengan baik lancar, namun seiring dengan berjalannya waktu, eksekusi query terasa lambat entah karena query yang tidak optimal atau data yang semakin besar. Jika sudah demikian, maka mau tidak mau kita harus melakukan optimasi query MySQL / MariaDB. Kenapa? karena hal ini akan berdampak signifikan bagi kelangsungan aplikasi kita.

Optimasi Query Database MySQL - MariaDB dan Server MySQL - MariaDB - Cover

Optimasi Query Database MySQL – MariaDB

Kami memahami betul pentingnya kecepatan eksekusi query dan dampaknya bagi database administrator maupun user, untuk itu kami telah memikirkan berbagai aspek yang mungkin kita lakukan untuk mengatasi hal tersebut dan menuangkannya pada ebook eksklusif “Optimasi Query MySQL – Maksimalkan Kecepatan Query MySQL / Maria DB Anda”.

eBook ini membahas secara  mendalam  teknik yang diperlukan untuk melakukan optimasi query pada database MySQL maupun MariaDB disertai berbagai contoh kasus query dengan jumlah record cukup besar (lebih dari 1 juta), sehingga dapat mencerminkan kondisi riil dilapangan.

Pembahasan oprtimasi query dilakukan mulai dari penggunaan index, seperti kapan perlu menggunakan index, operator yang dapat manfaatkan index, mendeteksi index yang digunakan pada composite index, hingga setting konfigurasi server MySQL/MariaDB agar operasi database dapat maksimal.

Selain belajar bagaimana melakukan optimasi query, pada buku ini juga akan belajar bagaimana mengoptimasi aplikasi yang menjalankan query tersebut sehingga sinkron antara aplikasi dan query, dengan demikian aplikasi tidak memperberat eksekusi Query database.

Materi Optimasi Query MySQL / MariaDB

Berikut ini gambaran singkat pembahasan pada ebook:

1. Memahami Semua Hal Tetang Index.

Seperti kita ketahui bahwa untuk mempercepat eksekusi query, kita Wajib menambahkan index pada tabel. Namun ternyata dengan menambahkan index tidak serta merta query menjadi cepat, kenapa? ternyata ada syarat syarat yang harus dipenuhi agar optimizer dapat menggunakan index, seperti operator pembanding yang digunakan.

Lebih kompleks lagi ketika filter pada klausa WHERE mengandung lebih dari satu kriteria sehingga memaksa kita untuk membuat beberapa individual index atau yang lebih efektif menggunakan komposit index (multi kolom index).

Pada komposit index tidak serta merta semua kolom index digunakan, kita harus teliti lagi apakah benar MySQL menggunakan semua kolom index.

2. Memahami Statement Explain.

Ketika mengeksekusi suatu query, MySQL menyusun rencana apa saja yang akan dilakukan untuk mengeksekusi query tersbut. Rencana ini tertuang dalam Query Execution Plan (QEP). Dengan membaca QEP tersebut kita dapat menganalisa efektifitas suatu query.

QEP ini dapat kita lihat dengan menggunakan statement Explain, misal:

mysql> EXPLAIN SELECT * FROM transaksi
    -> WHERE kode_user = '4322248645' AND id_ekspedisi = 2 \G;
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: transaksi
   partitions: NULL
         type: index_merge
possible_keys: kode_user,id_ekspedisi,kode_user_id_ekspedisi_tgl_trx
          key: kode_user,id_ekspedisi
      key_len: 11,2
          ref: NULL
         rows: 212
     filtered: 100.00
        Extra: Using intersect(kode_user,id_ekspedisi); Using where

QEP ini menyajikan informasi detail baik untuk query sederhana maupun query yang kompleks yang melibatkan banyak tabel. Dengan mempelajari dan memahami setiap bagian dari QEP ini, kita dapat menganalisa bagian query mana yang perlu untuk dioptimasi.

Pada ebook ini juga dibahas mendalam mengenai visual explain.

3. Profiling Query MySQL/MariaDB

Ketika MySQL mengeksekusi sebuah Query, banyak tahapan yang dilakukan. Dengan profiling query, kita dapat mengetahui tahapan yang dilakukan MySQL beserta waktu eksekusinya, sebagai contoh jika kita jalankan query berikut ini:

SELECT event_name AS STAGE
        , COUNT(event_name) JML_STAGE
        , TRUNCATE(TIMER_WAIT/1000000000000,6) AS DURASI
FROM `performance_schema`.`events_stages_history_long` 
WHERE NESTING_EVENT_ID = 4472
GROUP BY EVENT_NAME
ORDER BY TIMER_WAIT DESC

Maka tahapan yang akan dilakukan MySQL adalah:

+------------------------------------------+-----------+----------+
| STAGE                                    | JML_STAGE | DURASI   |
+------------------------------------------+-----------+----------+
| stage/sql/Sending data                   |         1 | 0.844615 |
| stage/sql/Creating sort index            |        34 | 0.011914 |
| stage/sql/removing tmp table             |         1 | 0.001452 |
| stage/sql/statistics                     |         1 | 0.000205 |
| stage/sql/init                           |         1 | 0.000114 |
| stage/sql/freeing items                  |         1 | 0.000114 |
| stage/sql/checking query cache for query |         1 | 0.000107 |
| stage/sql/Creating tmp table             |         1 | 0.000099 |
| stage/sql/Opening tables                 |         2 | 0.000039 |
| stage/sql/starting                       |         2 | 0.000035 |
| stage/sql/closing tables                 |         1 | 0.000027 |
| stage/sql/preparing                      |         1 | 0.000026 |
| stage/sql/query end                      |         1 | 0.000016 |
| stage/sql/optimizing                     |         1 | 0.000015 |
| stage/sql/System lock                    |         3 | 0.000010 |
| stage/sql/logging slow query             |         1 | 0.000007 |
| stage/sql/Sorting result                 |         1 | 0.000007 |
| stage/sql/end                            |         1 | 0.000002 |
| stage/sql/cleaning up                    |         1 | 0.000001 |
| stage/sql/Waiting for query cache lock   |        35 | 0.000000 |
| stage/sql/executing                      |         1 | 0.000000 |
| stage/sql/checking permissions           |         4 | 0.000000 |
+------------------------------------------+-----------+----------+

Dengan membaca dan memahami tahapan query diatas, kita dapat menganalisa tahapan mana yang menyebabkan query menjadi lambat, sehingga kita dapat mengambil tindakan dengan tepat.

4. Slow Query Log

Ketika sistem sudah berjalan, kita tidak dapat memonitor query satu per satu, query yang awalnya sudah optimal bisa jadi menjadi lambat karena penambahan data atau perubahan struktur tabel, dengan bantuan slow query log, kita dapat mengetahui query apa saja yang berjalan lambat.

Cara kerja slow query log ini adalah mencatat kedalam log query yang memerlukan waktu eksekusi melebihi batas yang telah ditentukan. Secara default, fitur ini tidak aktif. Untuk mengakaktifkannya, kita perlu menambahkan parameter pada file konfigurasi, misal pada my.ini:

slow_query_log = 1
long_query_time = 5
slow_query_log_file = D:/MySQL 5.7.22/slow_query_log.log
min_examined_row_limit = 0
log_queries_not_using_indexes

Log ini dapat disimpan di file maupun tabel slow_log yang ada di database mysql, contoh pada tabel database:

mysql> use mysql
mysql> SELECT * FROM slow_log \G;
*************************** 1. row ***************************
    start_time: 2018-08-23 20:34:34.403503
     user_host: root[root] @ localhost [127.0.0.1]
    query_time: 00:00:00.827931
     lock_time: 00:00:00.000170
     rows_sent: 17
 rows_examined: 17
            db: mysql
last_insert_id: 0
     insert_id: 0
     server_id: 1
      sql_text: SHOW TABLE STATUS FROM `online_shop`
     thread_id: 2
*************************** 2. row ***************************
    start_time: 2018-08-23 20:35:58.081422
     user_host: root[root] @ localhost [127.0.0.1]
    query_time: 00:00:01.912297
     lock_time: 00:00:00.000468
     rows_sent: 24490
 rows_examined: 291696
            db: online_shop
last_insert_id: 0
     insert_id: 0
     server_id: 1
      sql_text: SELECT no_invoice
, SUM(IF(id_kategori = 1, jml_barang, NULL)) AS keyboard_mouse
, SUM(IF(id_kategori = 2, jml_barang, NULL)) AS speaker
, SUM(IF(id_kategori = 3, jml_barang, NULL)) AS cd_dvd
, SUM(transaksi.total_harga)
FROM transaksi
LEFT JOIN transaksi_detail AS td USING(no_invoice)
LEFT JOIN produk USING(id_produk)
LEFT JOIN user_profil p USING (kode_user)
WHERE transaksi.tgl_trx >='2018-08-01' AND transaksi.tgl_trx <='2018-08-31'
GROUP BY no_invoice
     thread_id: 2
2 rows in set (0.00 sec)

Setelah mengetahui query mana saja yang berjalan lambat (melebihi waktu yang telah ditentukan) kita analisa lebih jauh query tersebut melalui profiling query maupun statemen explain.

5. Memahami Query Cache

Ketika MySQL mengeksekusi suatu query, MySQL akan menyimpan Query (hanya perintah SELECT) beserta hasilnya di cache. Jika kemudian ada perintah SQL yang sama persis (identik), maka server akan mengambilnya dari cache tanpa perlu mengeksekusi query tersebut, hal ini akan membuat data hasil query dapat di peroleh dengan cepat.

Mengerti dan memahami query cache in dapat memberikan pemahaman bagi kita bagaimana menjalankan query sehingga query tersebut dapat dicache.

6. Optimasi Struktur Tabel Database

Ketika berbicara mengenai optimasi query, maka tidak terlepas dari optimasi tabel, karena meskipun tidak signifikan, pemilihan struktur tabel juga akan mempengaruhi waktu eksekusi query.

Hal – hal yang perlu ketika perhatikan ketika menentukan struktur tabel:

  • Buat index pada tabel, namun sembarangan membuat index berisiko menurunkan performa query secara signifikan.
  • Pilih character set sesuai kebutuhan. Characterset yang tidak tepat akan menambah beban kerja server.
  • Pilih storage engine yang sesuai. Masing masing storage engine di desain untuk operasi tertentu.
  • Gunakan tipe data dan panjang data yang tepat.
  • Buat primary key pada setiap tabel dan tidak perlu menyertakan primary key pada secondary index. Primary Key sangatlah penting ketika kita menggunakan engine InnoDB.
  • Jika memungkinkan definisikan kolom tabel dengan NOT NULL.
  • Sinkronkan kolom tabel yang digunakan sebagai foreign key.
  • Dan lain sebagainya.

Memahami (tidak sekedar mengetahui) hal hal diatas akan membantu kita meningkatkan performa query selain menanamkan habbit dalam diri kita untuk selalu menerapkan best practice dalam setiap pembuatan tabel.

7. Optimasi Query MySQL / MariaDB

Optimasi query dapat dilakukan dengan berbagai cara diantaranya menghindari hal-hal yang menyebabkan MySQL memeriksa baris pada tabel satu per satu, hingga mengubah bentuk query (menyusun ulang query).

Optimasi query dapat dilakukan dengan berbagai cara, diantaranya:

  • Memahami operator yang dapat menyebabkan tidak dapat digunakannya index.
  • Menghindari operasi pada kolom.
  • Optimasi kolom dengan tipe data date.
  • Hindari Type Conversion.
  • Hindari Select * ?, Tidak selalu.
  • Pindahkan filter dari WHERE ke klausa SELECT.
  • Hindari looping query.
  • Dan lain sebagainya.

Pada kondisi tertentu query tidak dapat dioptimasi, misal ketika melibatkan fungsi agregasi pada tabel yang memiliki banyak data.

Penjelasan lebih jauh dibahas lengkap pada eBook.

8. Optimasi Konfigurasi Server MySQL / MariaDB

Server MySQL dijalankan dengan menggunakan berbagai konfigurasi. Ketika MySQL diinstall dan dijalankan pertama kali, maka mysql akan menggunakan konfigurasi standar, agar dapat lebih optimal, kita dapat menyesuaikan konfigurasi ini sesuai dengan kondisi server yang kita gunakan.

Terkait optimasi query, optimasi konfigurasi ini dapat dikelompokkan menjadi tiga bagian, yaitu: optimasi konfigurasi server secara umum, optimasi konfigurasi storage InnoDB, optimasi konfigurasi MyISAM. Pengaturan masing masing konfigurasi disesuaikan dengan keperluan.

Setiap item konfigurasi (lihat daftar isi) dibahas lengkap di eBook

9. Optimasi Query MySQL Pada “Big Database”

Pada aplikasi yang menyimpan data secara rutin, dari waktu ke waktu jumlah data akan semakin bertambah dan akhirnya pada titik tertentu, database sudah tidak dapat menghandle data tersebut dengan baik, yang artinya, waktu eksekusi query sudah tidak ideal lagi, apapun optimasi yang telah dilakukan.

Database dengan jumlah data besar “melebihi batas normal” memerlukan penanganan sendiri karena apapun optimasi yang dilakukan, tidak dapat mendongkrak performa query.

Hal-hal yang dapat dilakukan untuk mengoptimasi query database dengan jumlah data besar adalah:

  • Mempartisi tabel. Mempartisi tabel artinya memecah tabel menjadi bagian bagian yang lebih kecil. Pada MySQL, partisi tabel ini agak ribet karena terdapat beberapa batasan, diantaranya tidak dapat digunakannya foreign key dan kewajiban menyertakan kolom partisi pada primary key dan/atau unique key, selain itu pengelolaan partisi juga perlu dilakukan secara kontinyu.
  • Split tabel manual. Selain menggunakan fitur partisi tabel bawaan MySQL, kita juga dapat mempartisi tabel secara manual yaitu dengan membuat tabel baru kemudian memindahkan data dari tabel utama ke tabel baru.

Masing masing cara diatas memiliki kelibihan dan kekurangan, lantas mana yang harus dipilih?

Selain materi, ebook juga studi kasus riil membuat resume data dari tabel database dengan jumlah data cukup besar, yaitu 32 juta rows.

10. Optimasi Aplikasi

Setelah kita berhasil mengoptimasi query dan mendapatkan waktu eksekusi query yang cepat, hal selanjutnya yang perlu diperhatikan adalah aplikasi untuk menjalankan query tersebut. Karena pengambilan data lambat bisa jadi bukan disebabkan oleh perintah query nya melainkan aplikasi yang digunakan untuk menjalankan perintah query tersebut.

Hal ini umumnya disebabkan oleh query didalam loop, selain itu seringnya query terpecah pecah, di ebook ini dibahas bagaimana mengatasi hal ini dan bagaimana menggabungkan beberapa query menjadi single query MySQL.

11. Optimasi Insert Data

Ketika memasukkan data dalam jumlah besar ke tabel database, seringnya proses insert berjalan lama atau bahkan sangat lama. Untuk mengatasi hal tersebut, kita perlu memahami beberapa hal penting diantaranya:

  • Besarnya disk I/O ketika proses insert.
  • Bentuk query insert dan hubungannya dengan penataan ulang index.
  • Uuran statemen insert.
  • Proses pengiriman data dari server ke client.
  • Dan lain sebagainya

Dengan mengetahui dan memahami hal tersebut diatas, kita dapat mengidentifikasi hal hal yang menyebabkan query insert menjadi lambat dan mengetahui bagaimana cara mengatasinya.

Detil e-Book optimasi query MySQL / MariaDB

Spesifikasi e-Book:

  • Judul: Optimasi Query MySQL – Maksimalkan Kecepatan Query MySQL/MariaDB Anda
  • Penulis: Agus Prawoto Hadi
  • Terbit: November 2018
  • Dimensi: 15,7 cm x 23 cm
  • Jumlah Halaman:  xix + 313

Fitur:

  • Ditulis dengan detail dan mudah dipahami.
  • Include source code.
  • Free lifetime update versi berikutnya.
  • Free support materi yang ada di buku via:  Whatsapp  dan  Email

Untuk siapa?

Buku ini cocok bagi Anda yang:

  • Sedang belajar query MySQL/MariaDB. Dengan membaca buku ini, akan memiliki bekal bagaimana menyusun query yang optimal.
  • Ingin mengoptimalkan waktu eksekusi query.
  • Memperdalam ilmu tentang pemanfaatan index pada query database
  • Sedang mengembangkan aplikasi, karena dengan memahami materi di buku ini, masalah besar aplikasi, yaitu waktu eksekusi query database dapat diidentifikasi lebih dini.

Daftar Isi

Daftar isi ebook:

  • Kata Pengantar
  • Source Code
  • Daftar Isi
  • BAB 1 Persiapan
    • 1.1. Server MySQL / Maria DB
    • 1.2. Software Client
  • BAB 2 Mengenal Istilah
    • 2.1. Client dan Server
      • 2.1.1. Server
      • 2.1.2. Client
      • 2.1.3. \g dan \G
    • 2.2. Optimizer dan Query Execution Plan (QEP)
      • 2.2.1. Optimizer
      • 2.2.2. Query Execution Plan (QEP)
    • 2.3 Statement dan Klausa
  • BAB 3 Mengukur Kecepatan Query
    • 3.1. Mengetahui Waktu Eksekusi
    • 3.2. Kecepatan Query Yang Dapat Diterima
  • BAB 4 Alur Eksekusi Query
    • 4.1. MySQL Client / Server Protocol
    • 4.2. Query Cache
    • 4.3. Parser
    • 4.4. Preprocessor
    • 4.5. Optimizer
    • 4.6. Query Execution Engine
    • 4.7. Bagian Yang Dapat Dioptimasi
  • BAB 5 Memahami Explain
    • 5.1. Wajib Diketahui
    • 5.2. Syntax Statemen EXPLAIN
    • 5.3. Output Statemen EXPLAIN
      • 5.3.1. id
      • 5.3.2. select_type
        • 5.3.2.1. SIMPLE
        • 5.3.2.2. PRIMARY
        • 5.3.2.3. DERIVED
        • 5.3.2.4. UNION
        • 5.3.2.5. UNION RESULT
        • 5.3.2.6. MATERIALIZED
        • 5.3.2.7. SUBQUERY
        • 5.3.2.8. DEPENDEN SUBQUERY
      • 5.3.3. table
        • 5.3.3.1. Urutan Join
        • 5.3.3.2. NULL
      • 5.3.4. type
        • 5.3.4.1. All
        • 5.3.4.2. Index
        • 5.3.4.3. Index_merge
        • 5.3.4.4. Range
        • 5.3.4.5. Ref / ref_or_null
        • 5.3.4.6. eq_ref
        • 5.3.4.7. Const, System
        • 5.3.4.8. NULL
      • 5.3.5. possible_key
      • 5.3.6. key
      • 5.3.7. key_len
      • 5.3.8. Ref
      • 5.3.9. Rows
        • 5.3.9.1. Membaca Kolom Rows: Satu Tabel
        • 5.3.9.2. Membaca Kolom Rows: Dua Tabel
        • 5.3.9.3. Membaca Kolom Rows: Tiga Tabel
        • 5.3.9.4. Limit
        • 5.3.9.5. Statistic Table
      • 5.3.10. Filtered
      • 5.3.11. Extra
        • 5.3.11.1. Using Where
        • 5.3.11.2. Using Index
        • 5.3.11.3. Using Index Condition
        • 5.3.11.4. Using Temporary
        • 5.3.11.5. Using Filesort
        • 5.3.11.6. Using Intersec
        • 5.3.11.7. Using Union
        • 5.3.11.8. Using Sort_union
        • 5.3.11.9. Using MMR
        • 5.3.11.10. Select tables optimized way
    • 5.4. Visual Explain
      • 5.4.1. Diagram Visual Explain
      • 5.4.2. Menganalisa Visual Explain
    • 5.5. Statemen EXPLAIN Pada UPDATE dan DELETE
  • BAB 6 INDEX
    • 6.1. Apa Yang Dimaksud Index?
    • 6.2. Seberapa Penting Index?
    • 6.3. Memahami Cara Kerja Index
    • 6.4. Menampilkan Index
    • 6.5. Memahami Kardinalitas Index
      • 6.5.1. Kardinalitas dan Penggunaan Index
      • 6.5.2. Update Kardinalitas
    • 6.6. Membuat Index
    • 6.7. Jenis Index
      • 6.7.1. Individual Index (Satu Kolom Index)
        • 6.7.1.1. Cara Kerja Individual Index
        • 6.7.1.2. Penggunaan Individual Index
      • 6.7.2. Composite Index (Multi Kolom Index)
        • 6.7.2.1. Cara Kerja Komposit Index: Left Most
        • 6.7.2.2. Penggunaan Komposit Index
    • 6.8. Covering Index
    • 6.9. InnoDB Index
      • 6.9.1. Clustered Index
      • 6.9.2. Nonclustered Index
      • 6.9.3. PRIMARY KEY Setiap Tabel ?
    • 6.10. Kelemahan Index
    • 6.11. File Index Pada MySQL
  • BAB 7 Optimasi Index
    • 7.1. Kapan Index Digunakan?
      • 7.1.1. WHERE dan Operator
        • 7.1.1.1. Trik: Operator AND
        • 7.1.1.2. Trik: Operator OR dan IN
        • 7.1.1.3. Trik: Kombinasi AND dan OR
      • 7.1.2. JOIN
      • 7.1.3. Fungsi MIN(), MAX(), dan COUNT()
      • 7.1.4. ORDER BY
        • 7.1.4.1. Tanpa WHERE
        • 7.1.4.2. Dengan WHERE: Komposit Index
        • 7.1.4.3. Dengan WHERE: Komposit Index Harus Urut
        • 7.1.4.4. Index Tidak Digunakan – Type: Range
        • 7.1.4.5. Perlukah Menambahkan Index ?
        • 7.1.4.6. Memahami Filesort.
    • 7.2. Apakah Index Telah Digunakan?
    • 7.3. Index Yang pendek
    • 7.4. Duplikasi Index
      • 7.4.1. Dupliaksi Index, Bahaya ?
      • 7.4.2. Komposit Index
      • 7.4.3. PRIMARY KEY
    • 7.5. More Index, More Better?
    • 7.6. Force Index
  • BAB 8 Optimasi Tabel
    • 8.1. Analyze Table dan Optimize Table
    • 8.2. Tipe Data dan Panjang Data
    • 8.3. Character Set
    • 8.4. Not Null
    • 8.5. Kolom Yang Berhubungan
    • 8.6. Selalu Gunakan PRIMARY KEY
    • 8.7. Memilih Storage Engine
  • BAB 9 Optimasi Query
    • 9.1. Gunakan MySQL Terbaru
    • 9.2. Operasi Pada Kolom
    • 9.3. Optimasi Kolom Tanggal
    • 9.4. Type Conversion
    • 9.5. Hindari Select * ?
    • 9.6. Pindahkan WHERE ke SELECT
    • 9.7. Tidak Semua Dapat Dioptimasi
  • BAB 10 Profiling
    • 10.1. Slow Query Log
      • 10.1.1. Slow Query Log Pada File
      • 10.1.2. Slow Query Log Pada Tabel Database
      • 10.1.3. Menggunakan mysqldumpslow
      • 10.1.4. Menghapus Log
    • 10.2. Profiling Query
      • 10.2.1. Performance Schema
      • 10.2.2. Query Profile
  • BAB 11 Optimasi Konfigurasi
    • 11.1. Optimasi Konfigurasi Server
      • 11.1.1. max_allowed_packet
      • 11.1.2. sort_buffer_size
      • 11.1.3. read_buffer_size
      • 11.1.4. read_rnd_buffer_size
      • 11.1.5. join_buffer_size
      • 11.1.6. net_buffer_length
      • 11.1.7. table_open_cache
    • 11.2. Optimasi Konfigurasi InnoDB
      • 11.2.1. innodb_buffer_pool_size
      • 11.2.2. innodb_buffer_pool_instance
      • 11.2.3. innodb_log_file_size
      • 11.2.4. innodb_log_files_in_group
      • 11.2.5. innodb_log_buffer_size
      • 11.2.6. innodb_flush_log_at_trx_commit
      • 11.2.7. innodb_per_file_table
    • 11.3. Optimasi Konfigurasi MyISAM
      • 11.3.1. key_buffer_size
      • 11.3.2. myisam_max_sort_file_size
      • 11.3.3. myisam_sort_buffer_size
    • 11.4. Contoh Konfigurasi
    • 11.5. Tes dan Ukur
  • BAB 12 Query Cache
    • 12.1. Karakteristik
    • 12.2. Mengktifkan Query Cache
    • 12.3. Cek Apakah Query Cache Telah Bekerja
    • 12.4. Mengetahui Query Yang Disimpan
    • 12.5. Reset Cache
    • 12.6. Batas Optimum Ukuran Cache Query.
  • BAB 13. Optimasi Aplikasi
    • 13.1. Tanamkan Mindset Ini
    • 13.2. Kasus 1: Resume dan Detail
    • 13.3. Kasus 2: Gabungkan Query
  • BAB 14 Insert dan Ekspor Data
    • 14.1. Insert Data
      • 14.1.1. LOAD DATA
      • 14.1.2. STATEMEN INSERT
    • 14.2. Ekspor Data
      • 14.2.1. mysqldump
      • 14.2.2. Menggunakan Database Management
      • 14.2.3. Output: Individual Insert Vs. Bulk Insert Vs. CSV
  • BAB 15 Big Database
    • 15.1. Partisi tabel
      • 15.1.1. Kapan Perlu Partisi Tabel?
      • 15.1.2. Manfaat Partisi Tabel
      • 15.1.3. Tipe partisi
      • 15.1.4. Jenis Partisi
        • 15.1.4.1. RANGE
        • 15.1.4.2. LIST
        • 15.1.4.3. HASH
        • 15.1.4.4. KEY
      • 15.1.5. Batasan Partisi Tabel
      • 15.1.6. Partition Pruning
      • 15.1.7. Manual Partition Pruning
      • 15.1.8. Subpartisi
      • 15.1.9. Mengelola Partisi
        • 15.1.9.1. Melihat Struktur dan Isi Partisi
        • 15.1.9.2. Merubah / Rename Partisi
        • 15.1.9.3. Menambah Partisi
        • 15.1.9.4. Menghapus Partisi
        • 15.1.9.5. Optimasi Partisi
      • 15.1.10. Auto Partition?
    • 15.2. Manual Tabel Split
    • 15.3. Studi Kasus: Resume Data
  • DAFTAR PUSTAKA

Bonus Chet Sheet “Optimasi Query Database MySQL/MariaDB”

Selain e-book, kami juga memberikan bonus eksklusif berupa cheatsheet pdf yang berisi ringkasan dari berbagai materi dalam buku tersebut.

Cheat sheet ini merupakan shortcut setelah anda memahami pembahasan yang ada didalam buku. Dengan cheatsheet ini, Anda dapat dengan cepat mengetahui hal hal yang diperlukan untuk mengoptimasi query dan database.

Cheat Sheet Optimasi Query Database MySQL

Cheat Sheet Optimasi Query Database MySQL

Kategori Cheat Sheet:

  • Optimasi Query MySQL / MariaDB.
  • Optimasi Konfigurasi Server.
  • Optimasi Tabel Database.
  • Optimasi Big Database.

Testimoni

Beberapa testimoni pembaca eBook Jagowebdev.com

Testimoni dari beberapa dosen perguruan tinggi swasta:

Testimoni Dosen PTS Malang - Untuk Bahan Ajar Mahasiswa

Testimoni Dosen PTS Malang – Untuk Bahan Ajar Mahasiswa

Testimoni Ebook Query MySQL Untuk Dosen - Pengajar

Testimoni Dari Dosen PTS Solo – Sangat Bermanfaat Bagi Akademisi

Testimoni dari mahasiswa:

Testimoni Ebook Panduan Query MySQL - Sangat Bagus Bagi Mahasiswa

Testimoni Ebook Panduan Query MySQL – Mahasiswa: Puas Banget Dengan Isinya

Testimoni dari pembaca lain:

Testimoni ebook - Materi yang mendalam

Testimoni – Materi jarang ditemui di buku-buku dalam negeri, apalagi di Google, materi advance namun tetap mudah dipahami dan di praktikkan

Testimoni Ebook Query MySQL

Testimoni Ebook Query MySQL “Penjelasannya Bagus Sekali”

Testimoni Ebook Panduan Lengkap Query MySQL

Testimoni Ebook  Query MySQL “#jenius”

Biaya Investasi

Paket diatas merupakan salah satu materi yang disediakan bagi member premium jagowebdev.com. Cukup dengan investasi sebesar  Rp. 100.000  Anda sudah dapat menjadi member premium dengan  masa keanggotaan selama 1 tahun. Dengan menjadi member premium, Anda dapat mendownload seluruh materi yang ada di halaman member.

Harga diatas dapat berubah sewaktu waktu seiring dengan jumlah item yang akan ditambahkan, jadi, jangan lewatkan kesempatan baik ini, segera join disini.

Paket Lainnya

Contact

Jika ada yang ingin ditanyakan, silakan kirim email ke: prawoto.hadi@gmail.com atau WhatsApp ke  no

2 Feedback dari pembaca

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com