Pengindeksan Mnesia & Optimasi Kueri
Percepat pembacaan Mnesia dengan indeks sekunder, kueri QLC, dan pemilihan tipe tabel yang cerdas agar pencarian terdistribusi tetap cepat.
Pengindeksan Mnesia & Optimasi Kueri adalah pelajaran Erlang OTP: Distributed & Fault-Tolerant Systems Programming gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Erlang OTP: Distributed & Fault-Tolerant Systems Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Erlang OTP: Distributed & Fault-Tolerant Systems Programming mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
The Cost of Scanning
By default Mnesia can find a record fast only by its primary key. Searching by any other field forces a full table scan — slow on large tables. Indexes and queries fix this.
Secondary Indexes
A secondary index lets Mnesia look up records by a non-key field in roughly constant time, at the cost of extra storage and slightly slower writes.
Creating an Index
Add an index on a field position with mnesia:add_table_index/2.
mnesia:add_table_index(user, email).Querying via an Index
Use index_read/3 to fetch all records whose indexed field matches a value.
mnesia:index_read(user, "a@b.com", email).Pattern Matching with match_object
match_object/1 finds records matching a pattern record where _ means any value.
Pattern = #user{id = '_', name = "Alice", _ = '_'},
mnesia:match_object(Pattern).Introducing QLC
QLC (Query List Comprehensions) gives a SQL-like syntax over Mnesia tables, with the compiler optimizing index use.
-include_lib("stdlib/include/qlc.hrl").A QLC Query
Write list-comprehension style queries against a table handle from mnesia:table/1.
Q = qlc:q([U || U <- mnesia:table(user), U#user.age > 18]),
mnesia:transaction(fun() -> qlc:e(Q) end).Table Type Choices
Mnesia tables can be ram_copies (fast, volatile), disc_copies (RAM + disk), or disc_only_copies (disk only, low memory). Pick by speed vs durability needs.
set, ordered_set, bag
The table type matters too: set (one record per key), ordered_set (sorted keys, enables range queries), and bag (multiple records per key).
Measuring Performance
Use mnesia:table_info(user, size) and timing around queries to confirm an index actually helps before adding it everywhere.
mnesia:table_info(user, size).Indexes and Writes
Every secondary index must be updated on each write, so adding many indexes slows inserts and updates. Index only the fields you actually query by, and drop unused indexes with del_table_index/2.
mnesia:del_table_index(user, email).Quick Check
Test your Mnesia optimization knowledge.
Recap
You learned to optimize Mnesia reads:
- Non-key searches scan the whole table unless indexed
- Add indexes with
add_table_index/2, query withindex_read/3 - QLC gives SQL-like queries that exploit indexes
- Choose table copy type (ram/disc) and structure (set/ordered_set/bag) by need
- Always measure before optimizing
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengindeksan Mnesia & Optimasi Kueri” gratis?
Ya — teks lengkap “Pengindeksan Mnesia & Optimasi Kueri” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Erlang OTP: Distributed & Fault-Tolerant Systems Programming, upgrade ke CoddyKit PRO. Kursus Erlang OTP: Distributed & Fault-Tolerant Systems Programming mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pengindeksan Mnesia & Optimasi Kueri”?
Percepat pembacaan Mnesia dengan indeks sekunder, kueri QLC, dan pemilihan tipe tabel yang cerdas agar pencarian terdistribusi tetap cepat. Kamu berlatih Erlang OTP: Distributed & Fault-Tolerant Systems Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Erlang OTP: Distributed & Fault-Tolerant Systems Programming?
Tidak diperlukan pengalaman sebelumnya. Erlang OTP: Distributed & Fault-Tolerant Systems Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Pengindeksan Mnesia & Optimasi Kueri” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Erlang OTP: Distributed & Fault-Tolerant Systems Programming ini?
Ya. Setiap pelajaran Erlang OTP: Distributed & Fault-Tolerant Systems Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Dasar-Dasar dan Skema Mnesia
- Transaksi dan Manipulasi Data
- Mnesia Terdistribusi dan Replikasi
- Pengindeksan Mnesia & Optimasi Kueri