Hanya 20 baris, tapi memindai satu juta baris? Tutorial lengkap optimasi performa SQL

3596
0
2026-10-08 19:45:32
174
34
534
19
# Hanya 20 baris, tapi memindai satu juta baris? Tutorial Lengkap Optimasi Kinerja SQL ## I. Judul Hanya 20 baris, tapi memindai satu juta baris? Tutorial Lengkap Optimasi Kinerja SQL Alternatif: - Mengembalikan 20 baris, memindai satu juta baris: Penjelasan mendalam tentang optimasi SQL - Ada indeks tapi sengaja tidak dipakai? Pahami EXPLAIN sebelum mulai mengubah - Paginasi mendalam (Deep Pagination) LIMIT satu juta: Mengapa semakin dibalik semakin lambat - Mesin tidak rusak, indeks juga ada, kelambatan terjadi karena SQL ini melakukan terlalu banyak pekerjaan sia-sia ## II. Deskripsi Daftar pesanan biasanya memakan waktu 80 milidetik, tetapi ketika pengguna beralih ke halaman yang sangat jauh di belakang, mereka harus menunggu lebih dari dua detik. Kedua angka dalam log kueri lambat tidak cocok: Rows_sent adalah 20, Rows_examined adalah 1000020— Untuk memberikan 20 baris ini kepada Anda, basis data terlebih dahulu membaca satu juta baris di depan satu per satu, lalu membuangnya. Mesin tidak rusak, indeks juga ada. Kelambatan terjadi karena SQL ini membuat basis data melakukan terlalu banyak pekerjaan sia-sia. Inti dari optimasi SQL sebenarnya hanya satu hal: membuat basis data membaca lebih sedikit baris dan mengambil lebih sedikit langkah. Video ini mengikuti urutan pemecahan masalah: temukan dulu SQL lambat, gunakan EXPLAIN untuk melihat rencana eksekusi, kemudian uraikan jenis-jenis masalah umum seperti indeks, paginasi, pengurutan, penggabungan (join), dan lapisan aplikasi, serta berikan solusi modifikasi untuk setiap jenis. ✅ Anda akan memahami: · Log kueri lambat + pt-query-digest: Penghematan waktu terbanyak sering kali berasal dari kueri "200 milidetik setiap kali, satu juta kali sehari" · Di mana waktu kueri dihabiskan: Halaman, buffer pool, pembacaan sekuensial vs pembacaan acak · Memahami EXPLAIN: type / key / rows / Extra, serta EXPLAIN ANALYZE untuk melihat waktu aktual yang dihabiskan · Pohon B+ (B+ Tree), table lookup (hui biao), dan indeks penutup (covering index): Jangan menulis SELECT * sembarangan · Indeks gabungan (Composite Index): Prefiks kiri (left prefix), pemotongan rentang; kesetaraan di depan, rentang di belakang · Empat cara membuat indeks tidak valid: Fungsi yang membungkus kolom, konversi tipe implisit, wildcard kiri (left fuzzy), OR · Kontraintuitif: Optimizer lebih memilih pemindaian seluruh tabel (full table scan) — ketika terlalu banyak table lookup, pembacaan acak lebih mahal daripada pemindaian sekuensial · Paginasi mendalam: Paginasi kursor dan delayed join, jangan gunakan LIMIT satu juta lagi · filesort / tabel sementara: Sesuaikan pengurutan dan pengelompokan dengan urutan indeks · JOIN dan COUNT: Kolom penggabungan harus memiliki indeks; COUNT(*) InnoDB dihitung di tempat · Tiga jebakan lapisan aplikasi: N+1, penyisipan baris demi baris, transaksi panjang ⏱ Garis waktu bab (dapat diklik untuk melompat) 00:00 Pendahuluan: Hanya 20 baris, tapi memindai satu juta baris 01:09 Temukan SQL lambat terlebih dahulu 02:29 Sisipan: Duokewang 03:15 Di mana waktu kueri dihabiskan 04:30 Memahami EXPLAIN 05:51 Pohon B+, table lookup, dan indeks penutup 07:05 Indeks gabungan: Prefiks kiri dan pemotongan rentang 08:17 Empat cara membuat indeks tidak valid 09:37 Kontraintuitif: Ada indeks, tapi sengaja tidak dipakai 10:53 Paginasi mendalam: LIMIT satu juta 12:12 Pengurutan dan pengelompokan: filesort dan tabel sementara 13:37 JOIN dan COUNT 15:06 Tiga jebakan lapisan aplikasi 16:29 Daftar periksa pemecahan masalah dan penutup Durasi video sekitar 17:44. Duokewang: https://duoke360.com/ Cocok untuk: Pengembang backend yang pernah menulis SQL dan terjebak oleh kueri lambat online, serta peserta wawancara yang ditanya tentang indeks, EXPLAIN, dan paginasi mendalam. Tidak perlu membaca kode sumber kernel MySQL, cukup tahu cara membaca log lambat untuk bisa mengikuti. Ringkasan satu kalimat: Buat basis data membaca lebih sedikit baris dan mengambil lebih sedikit langkah; Setiap modifikasi didasarkan pada angka dari EXPLAIN. Jika menurut Anda ini berguna, dukung dengan triple-thump (like, coin, favorite)~ Silakan tinggalkan pertanyaan di kolom komentar untuk diskusi. ## III. Tag Tag #OptimasiSQL #MySQL #KueriLambat #EXPLAIN #Indeks #PohonB+ #PaginasiMendalam #IndeksPenutup #IndeksGabungan #filesort #PengembanganBackend #BasisData #Wawancara #TutorialPemrograman #InnoDB #pt-query-digest --- ## IV. Kata Kunci Optimasi SQL, Kinerja MySQL, Kueri lambat, slow_query_log, pt-query-digest, EXPLAIN, EXPLAIN ANALYZE, type ALL, Using filesort, Using temporary, Pohon B+, Indeks Klaster, Table lookup, Indeks penutup, Using index, Indeks gabungan, Prefiks kiri, Pemotongan rentang, Index Condition Pushdown, Indeks tidak valid, Konversi tipe implisit, Wildcard kiri LIKE, FORCE INDEX, ANALYZE TABLE, Paginasi mendalam, LIMIT OFFSET, Paginasi kursor, Delayed join, filesort, sort_buffer, Tabel sementara, GROUP BY, JOIN, Nested loop, Hash join, COUNT(*), N+1, Transaksi panjang, InnoDB buffer pool
编程其实很简单,只要方法对了。我的个人博客duoke360.com
Sebenarnya apa hubungan antara WebSocket dan HTTP? Menjelaskan semuanya secara tuntas mulai dari jabat tangan, bingkai, masker, hingga detak jantung
09:17
Mengapa gRPC lebih cepat daripada HTTP+JSON? Menjelaskan Protobuf, HTTP2, dan empat jenis streaming secara tuntas
10:02
Mengapa HTTP/3 Meninggalkan TCP? Penjelasan Lengkap Head-of-Line Blocking QUIC, 0-RTT, dan Migrasi Koneksi
09:49
Apa perbedaan JSON, Protobuf, Avro, dan Thrift? Penjelasan mendalam tentang Varint, ZigZag, dan Nomor Field dalam Sekali Jalan
10:54
Mengapa GraphQL bisa mengalahkan REST? Satu permintaan untuk mendapatkan data yang tepat dibutuhkan
11:24
Mengapa IoT Tidak Menggunakan HTTP? Tutorial Lengkap MQTT
13:21
Desain Arsitektur Perangkat Lunak - Desain Mekanisme Middleware - Pembatasan laju ditambahkan tetapi masih dijebol? Urutan middleware, korsleting, dan konteks dijelaskan secara lengkap
10:40
Dapat menulis kodenya, apakah sistemnya bisa menahannya? Pelajaran pertama arsitektur perangkat lunak
10:11
Arsitektur Perangkat Lunak · Desain Pusat Konfigurasi - Jika pusat konfigurasi down, apakah layanan masih dapat dimulai? Empat kuadran, polling panjang, dan peluncuran bertahap dijelaskan secara lengkap
12:35
OAuth 2.0 Bukan Protokol Autentikasi: Yang Benar-benar Menjawab "Siapa Kamu" adalah OIDC
14:19
Bisakah JWT benar-benar menggantikan Session? Kebenaran di balik login tanpa status
15:09
Saat kamu menekan tombol Enter, berapa kali DNS melakukan pencarian?
12:14
Satu gambar untuk merangkum situs asal: Apa yang sebenarnya diblokir oleh CDN
12:08
Apa itu CSRF? Tutorial lengkap Cross-Site Request Forgery
06:02
Permintaan untuk masuk gerbang pertama layanan mikro: Tutorial Lengkap API Gateway
12:05
Mengapa LIKE di MySQL sangat lambat? Tutorial lengkap ElasticSearch.
05:59
Bagaimana kode bisa menjadi tegangan? Video yang menjelaskan prinsip-prinsip organisasi komputer secara menyeluruh
07:47
Praktik Tingkat Perusahaan MongoDB: Pengantar Kursus - Hanya tahu cara menambah, menghapus, memodifikasi, dan mencari, beranikah Anda menempatkan MongoDB dalam produksi?
09:46
Terlambat tiga detik, apakah stoknya benar-benar dikurangi atau tidak? Tutorial Lengkap Transaksi Terdistribusi
14:54
Hanya 20 baris, tapi memindai satu juta baris? Tutorial lengkap optimasi performa SQL
17:45
Kedua orang membaca sampai 1, bagaimana stoknya bisa jadi minus satu? Tutorial lengkap transaksi dan kontrol konkurensi
15:43
Mengubah satu nomor telepon dan memperbarui delapan puluh ribu baris? Tutorial lengkap tentang desain basis data dan bentuk normal
25:15
Ekspor sekali langsung melumpuhkan database utama? Tutorial lengkap tentang pemisahan baca-tulis database
16:21
Satu tabel dua puluh juta harus dipisah tabelnya? Tutorial lengkap pemisahan database dan tabel
13:16
Jam diputar ulang 3 milidetik, mengapa nomor pesanan bisa bentrok? Tutorial lengkap Algoritma Snowflake
16:23
Semua bisa dibuka, mengapa pesanan kemarin sore tidak bisa dipulihkan? Tutorial lengkap pencadangan dan pemulihan data
15:01
Perbedaan antara TCP dan UDP, dijelaskan dengan tuntas dalam sekali jalan (mengapa video bisa pecah-pecah/pixelated, tetapi file tidak ada yang salah satu byte pun)
11:21
Di WiFi kafe, mengapa kata sandi masuk berupa teks biasa? Tutorial lengkap HTTP dan HTTPS
14:18
Komputer ini mengenali Anda, tapi yang itu tidak: Penjelasan lengkap tentang Cookie dan Session
16:15
Satu kelas dimasukkan ke seluruh rantai bisnis? Tutorial lengkap kohesi tinggi, kopling rendah
13:36
Layanan Pelanggan
Atas
赛事库 课堂 2021拜年纪