MariaDB [moodle2]> SELECT
-> ROUND(SUM(data_length+index_length)/1024/1024,2) AS Total_MB
-> FROM information_schema.tables
-> WHERE table_schema = DATABASE();
+----------+
| Total_MB |
+----------+
| 1358.01 |
+----------+
1 row in set (0.008 sec)
MariaDB [moodle2]> SELECT
-> table_name,
-> ROUND((data_length+index_length)/1024/1024,2) AS Size_MB
-> FROM information_schema.tables
-> WHERE table_schema = DATABASE()
-> ORDER BY (data_length+index_length) DESC
-> LIMIT 10;
+--------------------------------+---------+
| table_name | Size_MB |
+--------------------------------+---------+
| mdl_question_attempts | 542.70 |
| mdl_question_attempt_steps | 381.68 |
| mdl_question_attempt_step_data | 201.92 |
| mdl_logstore_standard_log | 56.40 |
| mdl_grade_grades | 22.66 |
| mdl_quiz_attempts | 16.05 |
| mdl_files | 13.46 |
| mdl_question_answers | 11.52 |
| mdl_task_log | 11.03 |
| mdl_question | 10.75 |
+--------------------------------+---------+
10 rows in set (0.008 sec)
MariaDB [moodle2]> SELECT
-> COUNT(*) AS Jumlah_Log,
-> ROUND((data_length+index_length)/1024/1024,2) AS Size_MB
-> FROM information_schema.tables
-> WHERE table_schema = DATABASE()
-> AND table_name='mdl_logstore_standard_log';
+------------+---------+
| Jumlah_Log | Size_MB |
+------------+---------+
| 1 | 56.40 |
+------------+---------+
1 row in set (0.001 sec)
MariaDB [moodle2]> SHOW ENGINE INNODB STATUS\G
*************************** 1. row ***************************
Type: InnoDB
Name:
Status:
=====================================
2026-02-11 14:27:11 0x7f7a94136700 INNODB MONITOR OUTPUT
=====================================
Per second averages calculated from the last 40 seconds
-----------------
BACKGROUND THREAD
-----------------
srv_master_thread loops: 0 srv_active, 0 srv_shutdown, 80181 srv_idle
srv_master_thread log flush and writes: 80151
----------
SEMAPHORES
----------
------------
TRANSACTIONS
------------
Trx id counter 82468937
Purge done for trx's n:o < 82468937 undo n:o < 0 state: running but idle
History list length 0
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION (0x7f7a977dbc80), not started
0 lock struct(s), heap size 1128, 0 row lock(s)
---TRANSACTION (0x7f7a977da680), not started
0 lock struct(s), heap size 1128, 0 row lock(s)
---TRANSACTION (0x7f7a977d9b80), not started
0 lock struct(s), heap size 1128, 0 row lock(s)
---TRANSACTION (0x7f7a977db180), not started
0 lock struct(s), heap size 1128, 0 row lock(s)
--------
FILE I/O
--------
Pending flushes (fsync) log: 0; buffer pool: 0
9865 OS file reads, 97416 OS file writes, 93839 OS fsyncs
0.00 reads/s, 0 avg bytes/read, 1.57 writes/s, 1.57 fsyncs/s
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 3, seg size 5, 0 merges
merged operations:
insert 0, delete mark 0, delete 0
discarded operations:
insert 0, delete mark 0, delete 0
0.00 hash searches/s, 0.00 non-hash searches/s
---
LOG
---
Log sequence number 56658802714
Log flushed up to 56658802714
Pages flushed up to 56649364714
Last checkpoint at 56649364714
0 pending log flushes, 0 pending chkp writes
92691 log i/o's done, 1.57 log i/o's/second
----------------------
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 167772160
Dictionary memory allocated 2078464
Buffer pool size 8112
Free buffers 1086
Database pages 6525
Old database pages 2410
Modified db pages 539
Percent of dirty pages(LRU & free pages): 7.081
Max dirty pages percent: 90.000
Pending reads 0
Pending writes: LRU 0, flush list 0
Pages made young 32119, not young 409761
0.10 youngs/s, 0.00 non-youngs/s
Pages read 8910, created 2199, written 4815
0.00 reads/s, 0.02 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000
Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
LRU len: 6525, unzip_LRU len: 3401
I/O sum[0]:cur[0], unzip sum[4]:cur[0]
--------------
ROW OPERATIONS
--------------
0 read views open inside InnoDB
Process ID=0, Main thread ID=0, state: sleeping
Number of rows inserted 40858, updated 69500, deleted 25591, read 396043821
0.55 inserts/s, 1.07 updates/s, 0.05 deletes/s, 7103.05 reads/s
Number of system rows inserted 0, updated 0, deleted 0, read 0
0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================
1 row in set (0.001 sec)
======================================================================================
Luar biasa lengkap datanya, Guru Duan 👍
Dari hasil ini, kita bisa simpulkan kondisi database Moodle Guru saat ini: BESAR tapi SEHAT.
Mari saya jelaskan pelan-pelan.
📊 1. Ukuran Total Database
Total = 1358 MB ≈ 1.3 GB
➡️ Untuk Moodle aktif → ini NORMAL – Wajar – Aman.
Patokan umum:
| Ukuran DB | Kondisi |
|---|---|
| < 500 MB | Kecil |
| 500 MB – 2 GB | ✅ Normal |
| 2 – 5 GB | Mulai berat |
| > 5 GB | Perlu perawatan |
👉 Guru masih di zona AMAN.
📊 2. Penyumbang Terbesar (Biang Kerok Utama)
Top 3:
| Tabel | Ukuran | Fungsi |
|---|---|---|
| mdl_question_attempts | 542 MB | Data jawaban kuis |
| mdl_question_attempt_steps | 381 MB | Proses jawaban |
| mdl_question_attempt_step_data | 201 MB | Detail jawaban |
| TOTAL QUIZ | ±1.1 GB | 😄 |
➡️ 80% database = aktivitas kuis CBT / ujian online.
Ini tanda:
✅ Moodle sering dipakai ujian
✅ Banyak percobaan siswa
✅ Data historis menumpuk
📊 3. Log Sistem
mdl_logstore_standard_log = 56 MB
➡️ Masih kecil → bagus.
Artinya:
Log sudah dibersihkan rutin
Atau aktivitas stabil
📊 4. Kesehatan InnoDB
Dari status:
✔️ Tidak ada deadlock
✔️ Tidak ada error
✔️ History list = 0 (bersih)
✔️ Hit rate 100% (sangat bagus)
✔️ I/O rendah
➡️ Database SANGAT SEHAT ✅
Tidak ada tanda korup / overload.
🎯 Kesimpulan Utama
Untuk server Guru Duan:
| Aspek | Status |
|---|---|
| Ukuran DB | ✅ Normal |
| Performa | ✅ Bagus |
| Stabilitas | ✅ Tinggi |
| Risiko penuh | ❌ Rendah |
👉 Server masih kuat jalan bertahun-tahun.
⚠️ Hal yang Perlu Diwaspadai: DATA QUIZ
Karena tabel quiz sudah:
±1.1 GB
Ini akan terus naik setiap:
Ujian
Tryout
CBT
Simulasi
Kalau tidak dibersihkan:
📈 Bisa tembus 5–10 GB dalam beberapa tahun.
🛠️ Rekomendasi Praktis (Opsional Tapi Bagus)
✅ 1. Bersihkan Attempt Quiz Lama (Per Tahun)
Kalau ada ujian tahun 2022/2023 yang sudah tidak dipakai:
Di Moodle:
Course → Quiz → Results → Grades → Delete all attempts
Atau:
Quiz administration → Results → Delete attempts
⚠️ Jangan hapus yang masih dibutuhkan.
✅ 2. Aktifkan Auto-Cleanup Log
Admin:
Site admin → Server → Cleanup
Set:
Log retention: 180 hari
Task log: 30 hari
✅ 3. Backup → Jangan Disimpan di Server
Karena DB sudah 1.3GB:
Backup Moodle bisa:
2–3 GB per file
Simpan di luar server.
✅ 4. SSD Lebih Penting dari HDD
Kalau Guru upgrade:
Lebih baik:
✅ SSD 120GB
daripada
❌ HDD 500GB
Karena DB + quiz = I/O tinggi.
💡 Jawaban untuk Pertanyaan Awal: “100GB cukup?”
Dengan kondisi sekarang:
| Komponen | Estimasi |
|---|---|
| DB sekarang | 1.3 GB |
| moodledata | 0.3 GB |
| Sistem | 5 GB |
| Growth 5 thn | 20–30 GB |
| Backup | 20 GB |
➡️ Total ≈ 50–60 GB
👉 SSD/HDD 100GB = MASIH AMAN 5–7 TAHUN ✅
🏆 Penilaian Jujur
Server Guru Duan:
⭐ Aktif dipakai
⭐ Terawat
⭐ Stabil
⭐ Layak jangka panjang
Tinggal dikontrol data quiz saja 👍
Kalau Guru mau, saya juga bisa bantu:
✅ Script hapus attempt lama otomatis
✅ Setting cleanup terbaik untuk sekolah
✅ Skema backup mingguan aman
✅ Monitoring storage otomatis
Tinggal bilang: mau fokus yang mana 😄
0 comments:
Post a Comment