- อธิบายวิธีคัดลอก ฐานข้อมูล SQLite ระหว่างคอมพิวเตอร์ให้เร็วขึ้น
- ดัชนีของฐานข้อมูลเป็นสาเหตุหลักที่ทำให้ความเร็วในการคัดลอกช้าลง
- สามารถใช้คำสั่ง
.dump ของ SQLite เพื่อดัมพ์ฐานข้อมูลออกมาเป็นไฟล์ข้อความได้
- ไฟล์ข้อความมีขนาดเล็กกว่าฐานข้อมูลต้นฉบับ และเมื่อบีบอัดจะยิ่งเล็กลงอีก
- วิธีนี้ช่วยให้คัดลอกฐานข้อมูลขนาดใหญ่ได้เร็วและเสถียรมากขึ้น
วิธีคัดลอกฐานข้อมูล SQLite ระหว่างคอมพิวเตอร์ให้เร็วขึ้น
- อธิบายวิธีคัดลอก ฐานข้อมูล SQLite ที่เก็บอยู่บนเซิร์ฟเวอร์ระยะไกลมายังคอมพิวเตอร์ในเครื่อง
- ในช่วงเริ่มต้นของโปรเจ็กต์ สามารถคัดลอกแบบง่าย ๆ ด้วยคำสั่ง
rsync ได้
- เมื่อฐานข้อมูลมีขนาดใหญ่ขึ้น ความเร็วในการคัดลอกจะช้าลงและความน่าเชื่อถือลดลง
สร้างดัมพ์ฐานข้อมูลเป็นไฟล์ข้อความ
- SQLite สามารถใช้คำสั่ง
.dump เพื่อดัมพ์ฐานข้อมูลออกมาเป็นไฟล์ข้อความได้
- ไฟล์ข้อความนี้ประกอบด้วยคำสั่ง SQL และอาจมีขนาดเล็กกว่าฐานข้อมูลต้นฉบับ
- ดัชนีจะถูกย่อให้อยู่ในรูปบรรทัดเดียวในไฟล์ข้อความ จึงช่วยประหยัดพื้นที่จัดเก็บได้
ประหยัดพื้นที่จัดเก็บด้วยการบีบอัด
- ไฟล์ข้อความเมื่อบีบอัดแล้วจะมีขนาดเล็กลงอีก
- ตัวอย่างเช่น หากฐานข้อมูล SQLite ต้นฉบับมีขนาด 3.4GB ไฟล์ข้อความที่บีบอัดด้วย gzip จะลดลงเหลือ 240MB
- การดาวน์โหลดไฟล์ข้อความที่บีบอัดแล้วทำให้การคัดลอกฐานข้อมูลเร็วขึ้นอย่างมาก
คำสั่ง ssh+rsync แบบใหม่
- สร้างไฟล์ข้อความที่บีบอัดด้วย gzip บนเซิร์ฟเวอร์ คัดลอกมายังคอมพิวเตอร์ในเครื่อง แล้วประกอบฐานข้อมูลขึ้นใหม่
- สร้างไฟล์ข้อความที่บีบอัดบนเซิร์ฟเวอร์:
ssh username@server "sqlite3 my_remote_database.db .dump | gzip -c > my_remote_database.db.txt.gz"
- คัดลอกไฟล์มายังคอมพิวเตอร์ในเครื่อง:
rsync --progress username@server:my_remote_database.db.txt.gz my_local_database.db.txt.gz
- แตกไฟล์บีบอัดและประกอบฐานข้อมูลใหม่ จากนั้นลบไฟล์ในเครื่อง
ดัมพ์ฐานข้อมูลเป็นแหล่งคัดลอกที่เสถียร
- หากมีการอัปเดตระหว่างการคัดลอกฐานข้อมูล
rsync อาจสร้างไฟล์ฐานข้อมูลที่ไม่ถูกต้องได้
- การสร้าง text dump ช่วยแก้ปัญหานี้ด้วยการเตรียมแหล่งข้อมูลสำหรับคัดลอกที่เสถียร
- วิธีนี้ช่วยประหยัดเวลาเมื่อทำงานกับฐานข้อมูลขนาดใหญ่ และทำให้การดาวน์โหลดเร็วขึ้นและเชื่อถือได้มากขึ้น
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
VACUUM INTOในการบันทึกฐานข้อมูล sqlite--rsyncableของ gzip แม้จะลดระดับการบีบอัดลงเล็กน้อย แต่ช่วยจำกัดความต่างให้อยู่เป็นจุด ๆ โดยไม่กระทบต่อผลลัพธ์การบีบอัดทั้งหมด