Alur Kerja Query dalam Sistem Backend - Perwira Learning Center

Latar Belakang

Pada pembahasan kali ini, saya mempelajari alur kerja query dalam sistem database relasional. Memahami cara kerja query menjadi penting karena setiap perintah yang dituliskan dalam SQL tidak langsung menghasilkan output, melainkan melalui beberapa tahapan proses di dalam sistem database. Dengan mengetahui alur tersebut, saya dapat memahami bagaimana data diproses sejak perintah dikirim hingga hasilnya ditampilkan.

Artikel ini dibuat dengan tujuan untuk mendokumentasikan pemahaman saya mengenai proses eksekusi query di dalam database. Selain sebagai bentuk refleksi pembelajaran, artikel ini juga diharapkan dapat membantu pembaca memahami bagaimana sistem database bekerja secara internal ketika menerima dan menjalankan perintah SQL.

Alat dan Bahan

Dalam proses pembelajaran dan penyusunan artikel ini, alat dan bahan yang digunakan meliputi:

1. Perangkat Lunak (Software)

  • Sistem Manajemen Basis Data (RDBMS) seperti MySQL
  • Web browser untuk mengakses dokumentasi resmi
  • Command Line Interface (CLI) atau GUI database misalnya phpMyAdmin

2. Perangkat Keras (Hardware)

  • Laptop atau komputer dengan sistem operasi Linux Ubuntu 

Arsitektur Umum Sistem Berbasis Database

Sebelum melacak perjalanan sebuah query, mari kita pahami terlebih dahulu aktor-aktor yang terlibat dalam ekosistem aplikasi berbasis database.

[Client/Browser]
↓ (HTTP/HTTPS)
[Backend/Server]
↓ (Koneksi Database)
[RDBMS]

[Database]

Client (Aplikasi atau Browser)

Client adalah antarmuka yang berinteraksi langsung dengan pengguna. Bisa berupa aplikasi mobile, aplikasi desktop, atau website yang berjalan di browser. Tugas utamanya adalah menangkap input pengguna dan menampilkan hasil yang dikembalikan oleh backend.

Backend/Server

Ini adalah "otak" yang memproses logika bisnis aplikasi. Backend menerima permintaan dari client, melakukan validasi, memproses data, dan berkomunikasi dengan database. Di sinilah kode aplikasi kita (PHP, Python, Node.js, Java, dll.) bekerja.

RDBMS (Relational Database Management System)

RDBMS adalah perangkat lunak yang mengelola database—contohnya MySQL, PostgreSQL, atau Oracle. Ia bertugas menerima perintah SQL, memprosesnya, dan mengembalikan hasil. RDBMS terdiri dari beberapa komponen internal yang akan kita bahas lebih lanjut.

Database

Ini adalah kumpulan data terstruktur yang tersimpan secara fisik di media penyimpanan (hard disk, SSD, dll.). Database berisi tabel-tabel dengan baris dan kolom, beserta indeks, view, dan objek lainnya.

Alur Kerja Sebuah Query

Sekarang, mari kita ikuti perjalanan sebuah query sejak pengguna melakukan aksi hingga respons diterima kembali. Kita akan menggunakan contoh sederhana: seorang pengguna melakukan login ke sistem.

Request dari Client

Perjalanan dimulai ketika pengguna mengisi form login dan menekan tombol "Masuk". Browser mengirimkan permintaan HTTP (biasanya POST) ke endpoint tertentu di backend, membawa data username dan password yang dimasukkan.

Backend Membentuk Query

Setelah menerima permintaan, backend melakukan serangkaian persiapan:
Validasi Input: Sebelum menyentuh database sama sekali, backend harus memastikan data yang diterima aman dan valid. Apakah username tidak kosong? Apakah password memenuhi kriteria minimum? Validasi ini penting untuk mencegah serangan dan memastikan data yang diproses berkualitas.
Penyusunan Query SQL: Setelah data divalidasi, backend menyusun perintah SQL yang sesuai. Untuk contoh login, query-nya mungkin seperti:

SELECT id, username, password_hash, role
FROM users
WHERE username = 'johndoe' AND active = true;

Penting: Pada tahap inilah konsep prepared statement atau parameterized query diterapkan untuk mencegah SQL injection. Data dari pengguna tidak langsung digabungkan ke string query, melainkan dikirim sebagai parameter terpisah.

Query Dikirim ke RDBMS

Backend kemudian membuka koneksi ke database (atau menggunakan koneksi dari connection pool) dan mengirimkan query untuk dieksekusi. Di sinilah peran RDBMS dimulai.

Parser

Tahap pertama dalam RDBMS adalah parser. Komponen ini bertugas:
  1. Memeriksa sintaks: Apakah penulisan SQL sudah benar? Tidak ada kata kunci yang salah ketik? Kurung buka dan tutup sesuai?
  2. Memeriksa semantik: Apakah tabel users memang ada? Apakah kolom username dan password_hash ada di tabel tersebut?
Jika parser menemukan kesalahan, proses akan berhenti dan RDBMS mengembalikan error ke backend.

Pengecekan Hak Akses (DCL)

Setelah query dinyatakan valid secara struktur, RDBMS memeriksa apakah user database yang digunakan oleh backend memiliki hak untuk menjalankan query tersebut. Inilah realisasi dari perintah DCL (GRANT dan REVOKE).
Sistem akan memeriksa:
Apakah user database memiliki hak SELECT pada tabel users?
Apakah ada pembatasan pada kolom tertentu?
Jika user tidak memiliki hak yang cukup, RDBMS akan mengembalikan error "permission denied" dan proses dihentikan.

Proses Eksekusi

Setelah query lolos pemeriksaan sintaks dan hak akses, tibalah tahap eksekusi yang sebenarnya. Di sinilah dua komponen penting bekerja: relational engine dan storage engine.

Relational Engine (Query Optimizer)

Relational engine, sering disebut juga query optimizer, adalah komponen yang menentukan bagaimana query akan dieksekusi secara paling efisien. Ia menyusun rencana eksekusi (execution plan) dengan mempertimbangkan:

  • Apakah akan menggunakan indeks atau melakukan full table scan?
  • Dalam urutan apa tabel akan di-join?
  • Filter mana yang akan diterapkan terlebih dahulu?
Yang menarik, meskipun kita menulis query dalam urutan tertentu, relational engine bebas menentukan urutan eksekusi logis yang berbeda asalkan hasilnya sama. Namun, secara konseptual, ada urutan logis bagaimana klausa SQL diproses:
  1. FROM - Menentukan tabel sumber data
  2. JOIN - Menggabungkan tabel sesuai kondisi
  3. WHERE - Memfilter baris berdasarkan kondisi
  4. GROUP BY - Mengelompokkan baris
  5. HAVING - Memfilter kelompok
  6. SELECT - Memilih kolom yang akan ditampilkan
  7. DISTINCT - Menghapus duplikat
  8. ORDER BY - Mengurutkan hasil
  9. LIMIT/OFFSET - Membatasi jumlah baris
Pemahaman tentang urutan ini penting karena memengaruhi bagaimana kita menulis query dan apa yang bisa kita lakukan di setiap klausa. Misalnya, kita tidak bisa menggunakan alias kolom dari SELECT dalam klausa WHERE, karena WHERE diproses lebih dulu.

Storage Engine

Setelah rencana eksekusi disusun, storage engine mengambil alih untuk benar-benar mengambil data dari media penyimpanan. Storage engine adalah komponen yang bertanggung jawab atas:
  • Membaca data dari file di disk
  • Mengelola buffer pool (cache di memory)
  • Mengelola indeks
  • Mengatur mekanisme locking
Untuk query SELECT sederhana, storage engine akan membaca halaman-halaman data yang diperlukan dari disk (atau dari cache jika sudah pernah diakses sebelumnya), lalu mengembalikannya ke relational engine untuk diproses lebih lanjut sesuai rencana eksekusi.

Transaksi (Jika Ada)

Dalam skenario login sederhana, mungkin tidak ada transaksi yang terlibat. Namun, jika operasi melibatkan perubahan data—misalnya, update timestamp terakhir login—maka mekanisme transaksi aktif.

BEGIN;
UPDATE users SET last_login = NOW() WHERE id = 123;
INSERT INTO login_log (user_id, login_time, ip_address) VALUES (123, NOW(), '192.168.1.1');
COMMIT;

Di sinilah perintah TCL (Transaction Control Language) berperan. Selama transaksi berlangsung, perubahan bersifat sementara dan belum permanen. Jika terjadi kesalahan di tengah jalan, ROLLBACK dapat mengembalikan data ke keadaan semula. Jika semua berhasil, COMMIT akan membuat perubahan menjadi permanen.

Selama proses ini, storage engine juga mengelola mekanisme locking untuk memastikan transaksi berjalan secara terisolasi dari transaksi lain yang mungkin terjadi bersamaan.

Hasil Dikembalikan

Setelah RDBMS selesai memproses query—baik itu mengembalikan baris data, jumlah baris yang terpengaruh, atau sekadar konfirmasi sukses—hasil tersebut dikirim kembali ke backend.
Backend kemudian:
  1. Menerima hasil dari database
  2. Memprosesnya sesuai logika bisnis (misalnya, memverifikasi password hash, membuat session)
  3. Menyusun respons dalam format yang sesuai (JSON, XML, dll.)
  4. Mengirim respons kembali ke client melalui HTTP
Client akhirnya menampilkan hasil kepada pengguna—entah itu halaman utama aplikasi atau pesan error "username/password salah".

Posisi DDL, DML, DCL, dan TCL dalam Alur Tersebut

Sekarang kita bisa melihat bagaimana keempat kategori SQL berperan dalam sistem yang utuh:

DDL (Data Definition Language)

Perintah seperti CREATE, ALTER, DROP biasanya digunakan pada tahap inisialisasi dan pengembangan sistem, atau saat migrasi database. DDL mengubah struktur database itu sendiri, yang akan memengaruhi bagaimana data disimpan dan diakses di masa mendatang. Perubahan DDL biasanya melibatkan pemeriksaan hak akses khusus dan sering kali tidak bisa di-rollback sepenuhnya.

DML (Data Manipulation Language)

Ini adalah kategori yang paling sering digunakan saat sistem berjalan. Setiap kali pengguna menambah, mengubah, menghapus, atau melihat data, perintah DML (SELECT, INSERT, UPDATE, DELETE) yang bekerja. Perintah-perintah ini melewati seluruh lifecycle yang telah kita bahas.

DCL (Data Control Language)

DCL bekerja pada tahap awal setelah parsing—saat RDBMS memeriksa apakah user database memiliki hak untuk menjalankan perintah tertentu. GRANT dan REVOKE mengubah kebijakan akses yang akan digunakan dalam pemeriksaan ini untuk semua query selanjutnya.

TCL (Transaction Control Language)

TCL aktif selama proses eksekusi yang melibatkan perubahan data. COMMIT, ROLLBACK, dan SAVEPOINT mengatur kapan perubahan menjadi permanen dan bagaimana transaksi dipulihkan jika terjadi kesalahan.

Bagaimana Error Terjadi dalam Alur Query

Memahami di mana error bisa terjadi membantu kita mendiagnosis masalah dengan lebih cepat.

Error Sintaks

Terjadi di tahap parser. Contoh: salah menulis SELECT menjadi SELET. Error ini murni kesalahan penulisan dan biasanya mudah diperbaiki.

Error Hak Akses

Terjadi setelah parsing, saat DCL checking. User database tidak memiliki hak untuk SELECT dari tabel tertentu, atau tidak boleh INSERT ke tabel tersebut. Ini sering terjadi jika konfigurasi user database tidak sesuai.

Error Constraint

Terjadi saat eksekusi DML. Contoh: mencoba INSERT data dengan nilai NULL pada kolom yang didefinisikan sebagai NOT NULL, atau mencoba memasukkan duplikat pada kolom dengan unique constraint. Ini adalah mekanisme proteksi yang menjaga integritas data.

Error Transaksi

Bisa terjadi saat proses transaksi berlangsung—misalnya, deadlock (dua transaksi saling menunggu) atau timeout. Dalam kasus seperti ini, RDBMS biasanya akan membatalkan salah satu transaksi dan mengembalikan error.
Penting untuk dipahami bahwa error bukanlah "kegagalan" sistem, melainkan mekanisme kontrol yang memastikan data tetap konsisten dan aman.

Pentingnya Memahami Alur untuk Debugging dan Performa

Mengapa seorang backend developer perlu memahami semua detail teknis ini?

Debugging yang Lebih Efektif

Ketika aplikasi menghasilkan error, pemahaman tentang alur query membantu Anda segera mempersempit lokasi masalah. Apakah error sintaks? Berarti ada masalah di kode backend yang menyusun query. Apakah error hak akses? Berarti konfigurasi user database perlu diperiksa. Apakah error constraint? Berarti ada ketidaksesuaian antara data yang dikirim dan aturan di database.

Optimalisasi Performa

Memahami peran relational engine dan storage engine membantu Anda menulis query yang lebih efisien. Ketika Anda tahu bahwa WHERE diproses sebelum SELECT, Anda mengerti mengapa menggunakan fungsi pada kolom di WHERE bisa memperlambat query (karena fungsi mencegah penggunaan indeks). Ketika Anda memahami cara kerja storage engine, Anda lebih menghargai pentingnya indeks yang tepat.

Keamanan yang Lebih Baik

Pengetahuan tentang di mana validasi dan pengecekan hak akses terjadi membantu Anda merancang sistem keamanan berlapis. Anda tidak hanya mengandalkan validasi di backend, tetapi juga memanfaatkan mekanisme keamanan bawaan database.

Konsistensi Data

Pemahaman tentang transaksi dan TCL membantu Anda merancang operasi yang melibatkan banyak perubahan data dengan aman. Anda tahu kapan harus menggunakan transaksi, bagaimana menangani error, dan bagaimana memastikan data tetap konsisten bahkan dalam skenario yang kompleks.

Hasil Pembelajaran

Melalui pembelajaran ini, saya memahami bahwa alur kerja query dimulai ketika pengguna mengirimkan perintah SQL ke database server. Selanjutnya, query akan melalui tahap parsing untuk memeriksa sintaks, kemudian masuk ke tahap validasi untuk memastikan tabel dan kolom yang disebutkan benar-benar ada. Setelah itu, sistem melakukan proses optimasi guna menentukan cara paling efisien untuk mengeksekusi query tersebut.

Setelah rencana eksekusi ditentukan, database akan menjalankan query sesuai strategi yang telah dioptimalkan, mengambil atau memodifikasi data yang diperlukan. Terakhir, hasil eksekusi akan dikirim kembali kepada pengguna dalam bentuk data atau pesan konfirmasi. Proses ini terjadi secara sistematis dan terstruktur di dalam sistem database.

Kesimpulan

Alur kerja query menunjukkan bahwa setiap perintah SQL diproses melalui beberapa tahapan sebelum menghasilkan output. Proses seperti parsing, validasi, optimasi, dan eksekusi memastikan bahwa query berjalan dengan benar dan efisien.

Dengan memahami alur kerja query, saya dapat menulis perintah SQL dengan lebih baik serta memahami penyebab terjadinya error atau lambatnya proses eksekusi. Pemahaman ini menjadi dasar penting dalam mengelola dan mengoptimalkan penggunaan database dalam pengembangan aplikasi.

Daftar Pustaka

Oracle Corporation. (n.d.). MySQL 8.0 reference manual. Diakses pada 21 Februari 2026, dari https://dev.mysql.com/doc/

PostgreSQL Global Development Group. (n.d.). PostgreSQL documentation: Query planning. Retrieved Diakses pada 21 Februari 2026, dari https://www.postgresql.org/docs/

Microsoft. (n.d.). Query processing architecture guide (SQL Server). Diakses pada 21 Februari 2026, dari https://learn.microsoft.com/en-us/sql/relational-databases/query-processing-architecture-guide

IBM. (n.d.). Apa itu Bahasa Kueri Terstruktur (Structured Query Language, SQL)? Diakses pada 21 Februari 2026, dari https://www.ibm.com/id-id/think/topics/structured-query-language

Dicoding. (2024, November 27). Apa itu query dalam SQL? Bagaimana cara kerjanya? Diakses pada 21 Februari 2026, dari https://www.dicoding.com/blog/apa-itu-query-dalam-sql-bagaimana-cara-kerjanya/

Niagahoster. (2023). Pengertian SQL dan fungsinya dalam database. Diakses pada 21 Februari 2026, dari https://www.niagahoster.co.id/blog/pengertian-sql/