การแสดงรายการโฟลเดอร์ ownCloud ที่ช้า การซิงค์ที่ล่าช้า หรือ cron job ที่ใช้เวลานาน อาจบ่งชี้ถึงปัญหาคอขวดของฐานข้อมูล แต่การเพิ่มดัชนีโดยไม่ตรวจสอบให้ดีอาจทำให้เซิร์ฟเวอร์ไม่น่าเชื่อถือ ใน ownCloud Server 10 จุดเริ่มต้นที่ปลอดภัยคือการตรวจสอบเวอร์ชันและฐานข้อมูลที่แน่นอน สำรองข้อมูลอินสแตนซ์ จากนั้นใช้เฉพาะการเปลี่ยนแปลงสคีมาที่ระบุไว้สำหรับ ownCloud เวอร์ชันนั้นเท่านั้น ดัชนีสามารถช่วยในการค้นหาและการเชื่อมต่อแบบเลือกได้ นอกจากนี้ยังใช้พื้นที่จัดเก็บและเพิ่มภาระงานให้กับการแทรกและการอัปเดตด้วย
มีความแตกต่างที่สำคัญระหว่างเวอร์ชัน: เอกสารอ้างอิงคำสั่งอย่างเป็นทางการของ ownCloud Server 10.16 ในปัจจุบันนั้นระบุถึงการดำเนินการฐานข้อมูล เช่น การแปลงฐานข้อมูล แต่ไม่ได้ระบุdb:add-missing-indicesคำสั่งซ่อมแซมทั่วไป คำสั่งนั้นปรากฏอยู่ในเอกสารแนะนำของ Nextcloud ซึ่งเป็นผลิตภัณฑ์แยกต่างหาก ตรวจสอบคำสั่งบนเซิร์ฟเวอร์ของคุณเองก่อนที่จะเรียกใช้คำสั่งที่คัดลอกมาจากโครงการอื่น
คำสั่ง นี้occ statusยืนยันว่า CLI สามารถเชื่อมต่อกับระบบ ownCloud ได้ก่อนที่จะเริ่มดำเนินการกับฐานข้อมูล
สิ่งที่ดัชนีฐานข้อมูลสามารถแก้ไขได้ และสิ่งที่ไม่สามารถแก้ไขได้
ดัชนีฐานข้อมูลเป็นโครงสร้างเสริมที่ช่วยให้ฐานข้อมูลค้นหาแถวที่ตรงกันโดยไม่ต้องสแกนทั้งตาราง มันสามารถปรับปรุงการค้นหาข้อมูลที่กรอง การเชื่อมต่อ หรือการจัดเรียงตามคอลัมน์ที่มีดัชนีได้ เมื่อการค้นหาและลักษณะการกระจายข้อมูลทำให้ดัชนีนั้นมีประโยชน์ อย่างไรก็ตาม มันไม่ใช่ตัวเปลี่ยนความเร็วโดยทั่วไป: ตัวเพิ่มประสิทธิภาพฐานข้อมูลสามารถเลือกการสแกนตารางได้อย่างถูกต้องสำหรับตารางขนาดเล็กหรือการค้นหาข้อมูลที่ส่งคืนแถวจำนวนมาก
การสร้างดัชนีก็มีค่าใช้จ่ายเช่นกัน ดัชนีใช้พื้นที่ดิสก์ ต้องมีการบำรุงรักษาเมื่อมีการเปลี่ยนแปลงแถว และอาจทำให้การทำงานที่ต้องเขียนข้อมูลจำนวนมากช้าลง ดัชนีเพิ่มเติมในตารางหลักของ ownCloud อาจขัดแย้งกับการย้ายโครงสร้างข้อมูลหรือความคาดหวังของแอปพลิเคชัน อย่าเพิ่มดัชนีเพียงเพราะชื่อคอลัมน์ดูสำคัญ ควรตรวจสอบคำขอที่ทำงานช้าก่อนและยืนยันว่าแผนการสืบค้นข้อมูลจริงไม่มีประสิทธิภาพ
1. ยืนยันการสร้าง ownCloud และฐานข้อมูล
เรียกใช้คำสั่งจากไดเร็กทอรีการติดตั้ง ownCloud โดยใช้บัญชีเว็บเซิร์ฟเวอร์ ในการติดตั้ง Debian หรือ Ubuntu ทั่วไป บัญชีดังกล่าวคือwww-data:
cd /var/www/owncloud
sudo -u www-data php occ status
sudo -u www-data php occ list
ใช้เส้นทางและบัญชีบริการที่กำหนดค่าไว้บนโฮสต์ของคุณ ใน Docker ให้ใช้รูปแบบคำสั่งที่ระบุไว้ในเอกสารของคอนเทนเนอร์—ตัวอย่างเช่น คู่มือ ownCloud ใช้ `docker run` docker compose exec owncloud occ …เอาต์พุตสถานะจะระบุเวอร์ชัน ownCloud และประเภทฐานข้อมูล รายการคำสั่งจะแสดงสิ่งที่การติดตั้งนี้รองรับจริง หากไม่มีคำสั่งซ่อมแซมฐานข้อมูลอยู่ในรายการ อย่าคิดว่าคำแนะนำของ Nextcloud จะใช้ได้
ตรวจสอบภาพรวมผู้ดูแลระบบของ ownCloud เพื่อดูคำเตือนในการตั้งค่า และจดบันทึกชื่อตารางและดัชนีที่แน่นอนหากมีการรายงานว่าดัชนีหายไป นอกจากนี้ ให้บันทึกว่าส่วนใดทำงานช้า เช่น การค้นหาไฟล์ การแชร์หน้าเว็บ งานเบื้องหลัง หรือการซิงค์ข้อมูล การร้องเรียนที่ไม่ชัดเจน เช่น “ownCloud ทำงานช้า” นั้นไม่เพียงพอที่จะเป็นเหตุผลในการเปลี่ยนแปลงโครงสร้างข้อมูล
ใช้occรายการคำสั่งที่ติดตั้งไว้เพื่อตรวจสอบเวอร์ชัน ความพร้อมใช้งานของคำสั่งอาจแตกต่างกันระหว่าง ownCloud และ Nextcloud
2. สำรองข้อมูลก่อนเปลี่ยนแปลงโครงสร้างฐานข้อมูล
ก่อนที่จะสร้างดัชนี ย้ายฐานข้อมูล หรือซ่อมแซมใดๆ โปรดสำรองข้อมูลฐานข้อมูลและการตั้งค่า ownCloud อย่างสม่ำเสมอ และตรวจสอบให้แน่ใจว่าคุณรู้วิธีการกู้คืน คู่มือการสำรองข้อมูล ownCloud แนะนำให้เปิดใช้งานโหมดบำรุงรักษาก่อนทำการสำรองฐานข้อมูล คำสั่งสำรองข้อมูลฐานข้อมูลที่ถูกต้องจะขึ้นอยู่กับว่าเซิร์ฟเวอร์ใช้ MySQL หรือ MariaDB, PostgreSQL หรือ SQLite โปรดใช้เครื่องมือของผู้ให้บริการฐานข้อมูลที่ตรงกัน และปกป้องข้อมูลประจำตัวและไฟล์สำรองข้อมูล
sudo -u www-data php occ maintenance:mode --on
# Back up the database and ownCloud configuration with your vendor's procedure
# Confirm that the backup can be restored before proceeding
โหมดบำรุงรักษาจะป้องกันการใช้งานตามปกติในขณะที่กำลังดำเนินการบำรุงรักษา โปรดวางแผนช่วงเวลาการให้บริการสำหรับการใช้งานจริง อย่าคัดลอกไฟล์ฐานข้อมูลที่ใช้งานอยู่เพื่อใช้แทนการสำรองข้อมูลที่รองรับฐานข้อมูล เมื่อการทำงานและการตรวจสอบพื้นฐานเสร็จสมบูรณ์แล้ว ให้คืนค่าอินสแตนซ์กลับสู่โหมดปกติ:
sudo -u www-data php occ maintenance:mode --off
ก่อนที่จะทำการเปลี่ยนแปลงดัชนีหรือโครงสร้างข้อมูล ควรทำการสำรองข้อมูลฐานข้อมูลและไฟล์การกำหนดค่าที่สามารถกู้คืนได้ไว้ก่อน
3. ใช้การย้ายข้อมูลที่จัดการโดย ownCloud สำหรับการเปลี่ยนแปลงสคีมาของ ownCloud
ขั้นแรก อัปเกรด ownCloud และแอปที่ใช้งานร่วมกันได้เป็นเวอร์ชันที่รองรับ โดยทำตามคำแนะนำการอัปเกรดและบันทึกประจำรุ่นอย่างเป็นทางการ การอัปเกรด ownCloud จะดำเนินการย้ายฐานข้อมูลซึ่งจะเปลี่ยนแปลงโครงสร้างฐานข้อมูล รวมถึงการเปลี่ยนแปลงที่จำเป็นสำหรับระบบหลักและแอป คำแนะนำอย่างเป็นทางการแนะนำให้ดำเนินการขั้นตอนการอัปเกรดฐานข้อมูลoccสำหรับระบบขนาดใหญ่ ซึ่งการร้องขอผ่านเว็บอาจหมดเวลาได้
หากหน้าภาพรวมของผู้ดูแลระบบยังคงรายงานว่าดัชนีหายไป ให้ตรวจสอบsudo -u www-data php occ listเอกสารอย่างเป็นทางการที่เกี่ยวข้องสำหรับเวอร์ชัน ownCloud ของคุณโดยเฉพาะ คู่มือจากผู้พัฒนาภายนอกบางฉบับแสดงdb:add-missing-indicesคำสั่งดังกล่าว แต่คำสั่งนี้ไม่ได้ระบุไว้ในส่วนคำสั่งฐานข้อมูล ownCloud 10.16 ที่ตรวจสอบในบทความนี้ หากเวอร์ชันของคุณระบุคำสั่งนั้น ให้อ่านความช่วยเหลือในเครื่องและยืนยันขั้นตอนกับเอกสารหรือผู้จำหน่ายแอปสำหรับเวอร์ชันนั้นก่อนที่จะเรียกใช้ หากไม่มีคำสั่งดังกล่าว อย่าติดตั้งคำสั่ง Nextcloud แก้ไขตารางหลักของ ownCloud ด้วยตนเอง หรือคัดลอก SQL จากเวอร์ชันอื่น โปรดแจ้งคำเตือน เวอร์ชัน ownCloud ประเภทฐานข้อมูล และบันทึกที่เกี่ยวข้องให้ ownCloud หรือผู้ดูแลแอปทราบ
คำสั่งฐานข้อมูลที่แสดงในคู่มือ ownCloud เช่นdb:convert-typeหรือdb:convert-mysql-charsetใช้สำหรับการแปลงข้อมูลโดยเฉพาะ ไม่ใช่คำสั่งปรับแต่งดัชนีทั่วไป อย่าใช้คำสั่งแปลงข้อมูลเพื่อพยายามปรับปรุงความเร็วในการสืบค้นข้อมูล
4. ตรวจสอบหาสาเหตุของคิวรีที่ทำงานช้าโดยใช้เครื่องมือเฉพาะของฐานข้อมูล
เมื่อคุณสามารถระบุคำสั่ง SQL ที่ทำงานช้าได้ ให้ใช้เครื่องมือวิเคราะห์ที่ฐานข้อมูลของคุณมีให้ MySQL และ MariaDB มีเครื่องมือวิเคราะห์ ส่วนEXPLAINPostgreSQL ก็มีEXPLAINเครื่องมือวิเคราะห์เช่นกัน พร้อมด้วยผลลัพธ์และตัวเลือกเฉพาะ เริ่มต้นด้วยแผนการวิเคราะห์ที่อธิบายคำสั่งโดยไม่ต้องเรียกใช้งาน ระมัดระวังเมื่อใช้ตัวเลือกการวิเคราะห์: ฐานข้อมูลบางเวอร์ชันจะเรียกใช้งานคำสั่ง ซึ่งอาจไม่ปลอดภัยสำหรับการเขียนข้อมูลหรืออาจมีค่าใช้จ่ายสูงในฐานข้อมูลที่ใช้งานจริง
EXPLAIN SELECT ... FROM oc_filecache WHERE ...;
ตรวจสอบว่าแผนการทำงานอ่านแถวมากกว่าที่คำสั่งค้นหาส่งคืนหรือไม่ มีการพิจารณาดัชนีที่คาดหวังหรือไม่ และการเรียงลำดับหรือการเชื่อมต่อข้อมูลมีส่วนสำคัญต่อการทำงานมากกว่ากัน ดัชนีที่ตัวเพิ่มประสิทธิภาพไม่ได้เลือกใช้ไม่ได้หมายความว่าหายไปโดยอัตโนมัติ: หากคำสั่งค้นหาส่งคืนแถวจำนวนมาก การสแกนอาจมีต้นทุนที่ถูกกว่า เปรียบเทียบปริมาณงานเดียวกันบนสำเนาทดสอบที่เป็นตัวแทนก่อนทำการเปลี่ยนแปลงเฉพาะฐานข้อมูล SQL หลักของ OwnCloud และโครงสร้างตารางอาจเปลี่ยนแปลงไปในแต่ละเวอร์ชัน ดังนั้นดัชนีที่ดูมีประโยชน์ในวันนี้อาจกลายเป็นสิ่งที่ไม่จำเป็นหรือไม่ปลอดภัยหลังจากอัปเกรด
อ่านแผนการสืบค้นข้อมูลเฉพาะฐานข้อมูลสำหรับคำสั่งสืบค้นที่ทำงานช้าจริง ๆ ก่อนที่จะพิจารณาการสร้างดัชนีแบบกำหนดเองใด ๆ
5. ตรวจสอบอาการเดิมอีกครั้ง
หลังจากการย้ายข้อมูลที่ได้รับการสนับสนุนหรือการซ่อมแซมดัชนีที่ได้รับการอนุมัติเสร็จสมบูรณ์แล้ว ให้ตรวจสอบภาพรวมผู้ดูแลระบบ ownCloud อีกครั้ง และตรวจสอบบันทึกเซิร์ฟเวอร์และฐานข้อมูลเพื่อหาข้อผิดพลาด ทำซ้ำการกระทำของผู้ใช้หรืองานเบื้องหลังที่ทำงานช้า โดยใช้ปริมาณข้อมูลและเงื่อนไขที่คล้ายกัน เปรียบเทียบเวลาตอบสนอง CPU หรือ I/O ของฐานข้อมูล และจำนวนแถวที่ตรวจสอบในกรณีที่ฐานข้อมูลของคุณแสดงการวัดเหล่านั้น อย่ารายงานประสิทธิภาพที่เพิ่มขึ้นจากการทดสอบเล็กๆ เพียงครั้งเดียวหรือการโหลดหน้าเว็บที่ไม่เกี่ยวข้อง
หากคำเตือนหายไปแล้ว แต่การทำงานเดิมยังคงช้าอยู่ ปัญหาคอขวดอาจอยู่ที่อื่น เช่น ความล่าช้าในการจัดเก็บข้อมูล การประมวลผลของ PHP การรับส่งข้อมูลผ่านเครือข่าย คิวงานของ Cron การล็อกไฟล์ หรือการแคชหน่วยความจำ ownCloud แนะนำให้ใช้การแคชหน่วยความจำและการล็อกไฟล์ธุรกรรมภายนอกเพื่อลดภาระของฐานข้อมูล การตั้งค่าเหล่านี้ทำงานแตกต่างจากการสร้างดัชนีฐานข้อมูล ดังนั้นควรตั้งค่าตามคู่มืออย่างเป็นทางการและโครงสร้างการใช้งานของคุณ
รายการตรวจสอบอย่างรวดเร็ว
บันทึกเวอร์ชัน ownCloud ประเภทฐานข้อมูล การกระทำที่ได้รับผลกระทบ และคำเตือนการตั้งค่าที่พบอย่างละเอียด ตรวจสอบoccรายการคำสั่งที่ติดตั้งไว้ แยกแยะคำสั่งของ ownCloud ออกจากคำสั่งของ Nextcloud ก่อนเริ่มงานเกี่ยวกับโครงสร้างฐานข้อมูล ควรทำการสำรองข้อมูลและตรวจสอบให้แน่ใจว่าข้อมูลนั้นตรงกันทุกครั้ง ใช้ขั้นตอนการอัปเกรด ownCloud และการย้ายแอปที่ได้รับการสนับสนุน อย่าแก้ไขตารางหลักด้วยตนเองโดยปราศจากคำแนะนำเฉพาะสำหรับแต่ละเวอร์ชัน ใช้เครื่องมือวิเคราะห์แผนการสืบค้นของบริษัทผู้ผลิตฐานข้อมูลกับคำสั่งสืบค้นที่ใช้เวลานานจริง ๆ จากนั้นทำซ้ำขั้นตอนเดิมเพื่อตรวจสอบผลลัพธ์
ไม่มีชุดดัชนีสากลใดที่จะทำให้การติดตั้ง ownCloud 10 ทุกครั้งเร็วขึ้นได้ วิธีการที่ยั่งยืนคือการอัปเดตสคีมาที่รองรับให้ทันสมัยอยู่เสมอ ตรวจสอบการสืบค้นข้อมูลจริง เปลี่ยนแปลงเฉพาะสิ่งที่ผู้จำหน่ายหรือผู้ดูแลระบบที่เกี่ยวข้องระบุไว้ และตรวจสอบปริมาณงานเดียวกันอีกครั้งในภายหลัง
เอกสารอ้างอิงอย่างเป็นทางการ