Erlang OTP: Distributed & Fault-Tolerant Systems Programming · บทเรียน

การทำดัชนี Mnesia และการปรับคำค้นให้เหมาะสม

เร่งการอ่าน Mnesia ด้วยดัชนีรอง คำค้น QLC และการเลือกชนิดตารางอย่างเหมาะสม เพื่อให้การค้นหาแบบกระจายรวดเร็ว

บทเรียน 4 จาก 413 ขั้นตอน

การทำดัชนี Mnesia และการปรับคำค้นให้เหมาะสม เป็นบทเรียน Erlang OTP: Distributed & Fault-Tolerant Systems Programming ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Erlang OTP: Distributed & Fault-Tolerant Systems Programming และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Erlang OTP: Distributed & Fault-Tolerant Systems Programming มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

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 with index_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
เริ่มต้นได้ฟรี

เรียนรู้ Erlang ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
48

คำถามที่พบบ่อย

บทเรียน “การทำดัชนี Mnesia และการปรับคำค้นให้เหมาะสม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การทำดัชนี Mnesia และการปรับคำค้นให้เหมาะสม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Erlang OTP: Distributed & Fault-Tolerant Systems Programming ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Erlang OTP: Distributed & Fault-Tolerant Systems Programming มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การทำดัชนี Mnesia และการปรับคำค้นให้เหมาะสม”

เร่งการอ่าน Mnesia ด้วยดัชนีรอง คำค้น QLC และการเลือกชนิดตารางอย่างเหมาะสม เพื่อให้การค้นหาแบบกระจายรวดเร็ว คุณปฏิบัติ Erlang OTP: Distributed & Fault-Tolerant Systems Programming ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Erlang OTP: Distributed & Fault-Tolerant Systems Programming หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Erlang OTP: Distributed & Fault-Tolerant Systems Programming บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การทำดัชนี Mnesia และการปรับคำค้นให้เหมาะสม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Erlang OTP: Distributed & Fault-Tolerant Systems Programming นี้ได้ไหม

ได้ บทเรียน Erlang OTP: Distributed & Fault-Tolerant Systems Programming ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานและสคีมาของ Mnesia
  2. ธุรกรรมและการจัดการข้อมูล
  3. Mnesia แบบกระจายและการทำสำเนาข้อมูล
  4. การทำดัชนี Mnesia และการปรับคำค้นให้เหมาะสม
← กลับไปที่ Erlang OTP: Distributed & Fault-Tolerant Systems Programming