STATUS IS UPWIKI OPTIMASI SITUS WEB
26Perkuat
Kinerja dan pengiriman / Perkuat

Performa Basis Data untuk Situs Konten dan E-commerce

Cara menemukan pekerjaan basis data yang mahal, memperbaiki jalur yang penting, dan merilis perubahan performa tanpa menambah risiko keandalan.

Performa Basis Data untuk Situs Konten dan E-commerce — PANDUAN VISUAL
BACA
8 menit
SUMBER
8
VALIDASI ULANG
2027-03-27
ditinjau
Peninjau keandalan basis data dengan konteks aplikasi, keamanan, dan rilis
JAWABAN SINGKAT

Mulai dengan keputusan.

Mulailah dari permintaan pengguna yang lambat, lalu identifikasi pekerjaan basis datanya. Ukur kueri representatif, periksa rencananya (plan), dan ubah satu batasan yang sudah teruji pada satu waktu: bentuk kueri, indeks, paginasi, perilaku cache, atau penggunaan koneksi. Hasilnya harus tetap mengembalikan konten, harga, inventaris, dan izin yang benar.

Untuk situs konten dan e-commerce, gunakan pengukuran yang ditargetkan dan pengiriman yang konservatif. Jaga respons baca yang aman untuk dibagikan di luar basis data bila sesuai, beri ruang lingkup data terpersonalisasi secara benar, dan pertahankan kapasitas untuk kerja normal dan pemulihan. Uji dengan lalu lintas realistis, rilis bertahap, dan simpan jalur kembali yang sudah dilatih ke versi aplikasi yang diketahui baik.

PANDUAN VISUAL

Lihat pekerjaan sebagai sebuah sistem.

Gunakan peta ini untuk menghubungkan keputusan dalam artikel sebelum menerapkan taktik individual.

SIUPerkuat
01Temukan permintaan mahal sebelum mengubah basis data
02Rancang indeks untuk jalur akses yang sebenarnya Anda gunakan
03Buat paginasi stabil dan terjangkau
04Cache pekerjaan baca tanpa mengirimkan respons yang salah
01

Temukan permintaan mahal sebelum mengubah basis data

Mulai dari tindakan pengguna: memuat kategori, mencari artikel, menambah ke keranjang, atau mengirim pesanan. Tangkap rutenya, jumlah kueri, durasi basis data, baris yang dikembalikan, dan durasi permintaan. Halaman yang lambat juga bisa menunggu kode aplikasi atau dependensi lain, jadi jangan mendiagnosis hanya dari waktu muat halaman.

Rencana kueri (query plan) adalah jalur basis data melalui tabel, indeks, join, sort, dan agregat. Di PostgreSQL, EXPLAIN menunjukkan jalur itu. EXPLAIN ANALYZE menjalankan pernyataan dan melaporkan baris dan waktu aktual, jadi gunakan kueri representatif yang aman. Selisih besar antara estimasi dan aktual baris adalah alasan untuk menyelidiki statistik atau kondisi, bukan permintaan indeks otomatis.

Lacak satu perjalanan

Hubungkan kueri kandidat ke rute dan hasil, sehingga laporan pada dashboard tidak menyalip checkout yang lambat.

Pertahankan baseline

Catat pengukuran sebelum perubahan dan lalu lintas yang sebanding tanpa mencatat pengenal pelanggan, token, atau nilai terkait kartu.

02

Rancang indeks untuk jalur akses yang sebenarnya Anda gunakan

Indeks adalah struktur yang dipelihara yang dapat membantu menemukan baris atau mengembalikannya dalam urutan; itu bukan saklar kecepatan universal. Mulailah dari filter, kunci join, dan urutan (sort) kueri penting, lalu konfirmasi indeks yang diusulkan di dalam plan. PostgreSQL mendokumentasikan bahwa indeks B-tree yang cocok dapat memenuhi ORDER BY tanpa sort terpisah, terutama dengan LIMIT kecil.

Indeks menambah penyimpanan dan kerja tulis karena insert, update, dan delete harus memeliharanya. Untuk kueri yang membutuhkan fraksi besar dari tabel, sequential scan dan sort eksplisit bisa lebih cepat. Uji pada data yang mirip produksi dan pertahankan indeks hanya bila manfaatnya menjustifikasi biayanya.

Cocokkan jalur akses

Gunakan filter kueri dan ORDER BY yang sebenarnya, termasuk tie-breaker deterministik saat antarmuka membutuhkan urutan stabil.

Hindari indeks spekulatif

Tinjau apakah indeks digunakan dan apa biayanya saat menulis; periksa ulang saat data dan lalu lintas berubah.

03

Buat paginasi stabil dan terjangkau

Paginasi berbasis nomor halaman biasanya menggunakan LIMIT plus OFFSET. Selalu tetapkan urutan yang dapat diprediksi. PostgreSQL memperingatkan bahwa tanpa ORDER BY, LIMIT bisa mengembalikan subset yang tak terduga; nilai LIMIT atau OFFSET yang berbeda dapat menghasilkan subset yang tidak konsisten karena optimizer mungkin memilih rencana yang berbeda.

OFFSET besar perlu ditelaah karena baris yang dilewati tetap harus dihitung. Untuk penjelajahan katalog, riwayat pesanan, atau arsip yang dalam, pertimbangkan paginasi cursor atau keyset (keyset pagination): minta baris setelah nilai urut stabil terakhir yang terlihat dan tie-breaker unik. Tentukan bagaimana rekaman baru atau dihapus muncul sebelum mengubah antarmuka.

Tetapkan ukuran halaman yang tegas

Kembalikan ukuran halaman terkecil yang berguna daripada hasil yang tidak dibatasi.

Pisahkan perhitungan total

Putuskan apakah antarmuka benar-benar membutuhkan total yang tepat pada setiap permintaan.

04

Cache pekerjaan baca tanpa mengirimkan respons yang salah

Caching menggunakan kembali hasil sebelumnya alih-alih membangunnya ulang dari basis data. Mulailah di lapisan HTTP untuk halaman publik yang repeatable dan aset yang diberi versi, karena hit cache dapat menghindari kerja aplikasi dan basis data. web.dev merekomendasikan caching jangka panjang untuk URL yang diberi versi; mengubah URL adalah mekanisme invalidasi yang praktis.

Kebijakan cache adalah keputusan kebenaran (correctness). Cache bersama dapat menggunakan satu respons ke banyak pengguna, jadi jangan bagikan keluaran yang spesifik akun, keranjang, harga, atau otorisasi kecuali dirancang dan diuji untuk cakupan itu. Cache-Control private membatasi penggunaan ulang ke cache browser, sementara no-store mengarahkan cache untuk tidak menyimpannya.

Klasifikasikan respons

Pisahkan keluaran katalog publik atau artikel dari keluaran yang spesifik sesi, lokasi, dan sensitif terhadap izin.

Uji kesegaran

Tentukan siapa yang boleh melihat nilai usang, berapa lama, dan jalur invalidasi atau revalidasinya.

05

Lindungi kapasitas koneksi daripada sekadar menaikkan batas

Koneksi adalah sesi klien langsung ke basis data. Worker, cron job, preview, atau retry dapat menghabiskan slot meskipun kueri individu tampak dapat diterima. max_connections di PostgreSQL mengontrol koneksi konkuren, diset saat server start, dan nilai lebih tinggi mengalokasikan lebih banyak sumber daya termasuk shared memory. Menaikkannya tanpa model beban dapat memindahkan titik kegagalan.

Tetapkan satu anggaran di seluruh web worker, pekerjaan latar, administrasi, dan replika. Gunakan pooling terbatas di tempat yang sesuai, pertahankan headroom untuk pemulihan, dan terapkan timeout agar pekerjaan yang tersangkut tidak menunggu selamanya. Angka aman bergantung pada engine, memori, campuran kueri, dan batas penyedia; konfirmasikan dengan operator.

Hitung setiap klien

Sertakan proses web, antrian, tugas terjadwal, migrasi, alat pelaporan, dan tugas deployment.

Batasi retry

Batasi concurrency dan gunakan backoff sehingga sebuah kesalahan tidak menggandakan permintaan koneksi.

06

Amati biaya kueri dengan konteks dan kontrol privasi

Peringkat pekerjaan basis data berdasarkan dampak total, bukan satu sampel lambat. Kueri yang cukup lambat yang dipanggil ribuan kali bisa lebih penting daripada laporan yang jarang. pg_stat_statements di PostgreSQL mengagregasi data perencanaan dan eksekusi termasuk panggilan, total dan rata-rata waktu eksekusi, baris, dan aktivitas buffer. Ia membutuhkan konfigurasi server dan restart untuk ditambahkan atau dihapus; pelacakan perencanaan dapat menambah overhead.

Hubungkan grup kueri ke rute, versi rilis, dan jendela waktu. OpenTelemetry menyarankan mengumpulkan teks kueri secara default hanya setelah sanitasi mengganti literal, dan menggunakan ringkasan kueri ber-kardinalitas rendah untuk pengelompokan. Ini membantu pemilik melihat tren tanpa mengekspor data pelanggan atau membuat label untuk setiap nilai.

Pantau tail dan agregat

Tinjau durasi, total waktu, panggilan, error, koneksi, dan baris; masing-masing mengekspos mode kegagalan yang berbeda.

Sanitasi telemetri

Gunakan kueri terparameterisasi dan verifikasi literal dihapus sebelum trace atau log meninggalkan aplikasi.

07

Kirim perubahan basis data sebagai pekerjaan keandalan yang dapat dibalik

Perlakukan indeks, penulisan ulang, kebijakan cache, pengaturan pool, atau perubahan skema sebagai perubahan produksi dengan pemilik, ukuran keberhasilan, dan keputusan rollback. Validasi di lingkungan representatif, rilis ke irisan terbatas, dan pantau perjalanan yang terkena. Lebih cepat bukan berarti sukses jika perubahan mengembalikan data yang salah, hilang, duplikat, atau usang.

Perubahan skema perlu kehati-hatian karena versi aplikasi dapat saling bertumpuk. Panduan Google Cloud menjelaskan urutan kompatibilitas: rilis aplikasi yang menangani skema lama dan baru, ubah skema, lalu rilis fitur yang menggunakannya. Ini mempertahankan jalur rollback aplikasi. Perilaku penguncian dan perubahan online berbeda menurut engine dan layanan terkelola; minta tinjauan yang memenuhi syarat untuk sistem ber-volume tinggi atau terkait pembayaran.

Pradefinisikan guardrail

Nama rute, sinyal kinerja dan kebenaran, serta ambang batas yang menghentikan rollout.

Canary lalu perluas

Verifikasi kinerja dan kebenaran pada irisan yang terkendali sebelum memperluas; latih jalur kembali di luar insiden.

TINDAKAN / VERIFIKASI

Panduan tugas praktis Anda.

  1. 01

    Pilih satu perjalanan

    Pilih halaman atau transaksi dengan konsekuensi pelanggan yang jelas.

    VERIFIKASI: Rute dan hasil benar yang harus dipertahankan sudah dinamai.
  2. 02

    Ukur jalur

    Tangkap durasi permintaan, jumlah kueri, durasi basis data, baris, dan perilaku koneksi.

    VERIFIKASI: Baseline yang diberi tanggal ada dan tidak berisi nilai sensitif.
  3. 03

    Peringkat grup kueri

    Gunakan statistik dan trace untuk mengurutkan pekerjaan berdasarkan total waktu dan volume panggilan.

    VERIFIKASI: Tim dapat mengidentifikasi kueri mahal yang terikat pada perjalanan tersebut.
  4. 04

    Inspeksi plan yang aman

    Gunakan tool plan basis data pada pernyataan yang representatif.

    VERIFIKASI: Perbandingan baris yang diharapkan versus aktual dan operasi yang mahal tercatat.
  5. 05

    Pilih satu perubahan yang dibenarkan

    Pilih penyesuaian pada kueri, indeks, paginasi, cache, atau pool dan trade-offnya.

    VERIFIKASI: Perubahan memiliki pemilik dan bukti pengujian.
  6. 06

    Uji kebenaran

    Uji urutan, izin, visibilitas harga atau inventaris, dan cakupan cache bila relevan.

    VERIFIKASI: Data yang diharapkan dikembalikan untuk keadaan publik dan yang masuk relevan.
  7. 07

    Anggarkan koneksi

    Sertakan klien web, worker, terjadwal, pelaporan, dan administratif.

    VERIFIKASI: Total berada di bawah batas layanan dan akses pemulihan tetap ada.
  8. 08

    Canary dan putuskan

    Rilis ke bagian terbatas, lalu perluas atau kembali ke versi yang dikenal baik.

    VERIFIKASI: Sinyal kinerja, error, koneksi, dan kebenaran data mendukung keputusan.
TOPIK DISKUSI

Bandingkan kompromi, bukan data pribadi.

Gunakan prompt ini dengan tim Anda atau komunitas pemilik situs. Bagikan metode dan pelajaran, tetapi jangan pernah menempelkan kredensial, data pelanggan, atau detail infrastruktur yang tidak bersifat publik.

  1. 01

    Perjalanan pelanggan mana yang mengungkapkan perbaikan basis data paling berharga, dan apa yang Anda ukur pertama?

  2. 02

    Bagaimana tim Anda memutuskan kapan respons katalog atau konten aman untuk cache bersama?

  3. 03

    Keterbatasan rollback mana yang paling memengaruhi urutan rilis skema dan aplikasi Anda?

SUMBER POPULER / TERPERCAYA

Buka materi sumber.

PostgreSQL Global Development GroupUsing EXPLAIN ↗

Menjelaskan node plan kueri dan apa yang diukur EXPLAIN ANALYZE.

Ditinjau 2026-09-27
PostgreSQL Global Development GroupIndexes and ORDER BY ↗

Menunjukkan kapan indeks B-tree dapat menyediakan hasil berurut.

Ditinjau 2026-09-27
PostgreSQL Global Development GroupLIMIT and OFFSET ↗

Mendokumentasikan kebutuhan urutan stabil dan biaya OFFSET besar.

Ditinjau 2026-09-27
PostgreSQL Global Development GroupConnections and Authentication ↗

Mendefinisikan batas koneksi, slot yang dicadangkan, dan implikasi sumber daya.

Ditinjau 2026-09-27
PostgreSQL Global Development Grouppg_stat_statements ↗

Merinci statistik per-pernyataan, kebutuhan setup, dan pertimbangan overhead.

Ditinjau 2026-09-27
web.devPrevent unnecessary network requests with the HTTP Cache ↗

Panduan untuk Cache-Control, URL yang diberi versi, dan invalidasi.

Ditinjau 2026-09-27
Google CloudReliable releases and rollbacks—CRE life lessons ↗

Panduan prioritas-kompatibilitas untuk perubahan skema dan rollback aplikasi.

Ditinjau 2026-09-27
OpenTelemetrySemantic conventions for database client spans ↗

Panduan tracing basis data untuk ringkasan dan teks kueri yang disanitasi.

Ditinjau 2026-09-27

Kebijakan sumber. Menggunakan dokumentasi resmi yang dibaca untuk artikel ini. Saran bersifat kondisional; tautan internal adalah navigasi, bukan bukti.

PENJELASAN SINGKAT

Pertanyaan umum.

Haruskah saya menambah indeks setiap kali kueri lambat?

Tidak. Pertama tunjukkan bahwa kueri itu penting dan periksa plan-nya pada data representatif. Indeks bisa memperbaiki lookup yang cocok atau hasil terurut kecil, tetapi biayanya adalah penyimpanan dan kerja tulis; scan tabel bisa lebih baik ketika kueri membutuhkan sebagian besar tabel.

Apakah paginasi OFFSET selalu bermasalah?

Tidak. Itu bisa cocok untuk halaman dangkal dengan ORDER BY deterministik. Tinjau untuk penjelajahan dalam karena baris yang dilewati tetap harus dihitung; paginasi keyset sering layak dievaluasi untuk penjelajahan berurutan.

Bisakah saya meng-cache halaman e-commerce di CDN?

Hanya setelah mengklasifikasikan dan menguji respons. Konten publik yang repeatable mungkin cocok untuk cache bersama, sementara keranjang, data akun, keluaran spesifik otorisasi, dan nilai sensitif memerlukan penanganan yang membatasi. Minta tinjauan keamanan atau kepatuhan pembayaran yang memenuhi syarat untuk alur pembayaran material.

Status Is UP Editorial Team · Editor Uptime Enablement

Ditinjau oleh Peninjau keandalan basis data dengan konteks aplikasi, keamanan, dan rilis. Diterbitkan 2026-09-27; diperbarui 2026-09-30.