เพิ่มความเร็วในการสืบค้นข้อมูล ownCloud 10 ด้วยการจัดการดัชนีอย่างปลอดภัย

สำหรับ ownCloud 10 ให้เริ่มต้นด้วยการใช้การเปลี่ยนแปลงสคีมาที่มาพร้อมกับแกนหลักและแอปที่ติดตั้งไว้ จากนั้นตรวจสอบว่าการสืบค้นฐานข้อมูลใดที่ทำงานช้า อย่าเพิ่มดัชนีโดยไม่คิดให้รอบคอบ หรือคิดว่าคำสั่ง Nextcloud db:add-missing-indicesเป็นคำสั่งซ่อมแซมที่รองรับใน ownCloud 10: เอกสารอ้างอิง OCC ของ ownCloud Server 10.15 ฉบับปัจจุบันไม่ได้กล่าวถึงคำสั่งนี้ ดัชนีสามารถทำให้การอ่านที่ตรงกันเร็วขึ้น แต่ดัชนีที่เพิ่มเข้ามาทุกตัวจะใช้พื้นที่จัดเก็บและเพิ่มภาระงานให้กับการแทรก การอัปเดต และการลบข้อมูล

แนวทางนี้เหมาะสำหรับผู้ดูแลระบบที่มีหน้าเว็บ ownCloud การแสดงรายการไฟล์ หรือการทำงานของแอปช้า และสามารถเข้าถึงเซิร์ฟเวอร์และฐานข้อมูลได้ หากทั้งระบบทำงานช้า หรือทำงานบน SQLite โดยมีผู้ใช้งานหลายคนพร้อมกัน ควรตรวจสอบฐานข้อมูลและการตั้งค่าการใช้งานโดยรวมก่อนที่จะสรุปว่าดัชนีเป็นสาเหตุ

เลือกการเปลี่ยนแปลงที่สอดคล้องกับหลักฐาน

ดัชนีฐานข้อมูลเป็นโครงสร้างเสริมที่ช่วยให้ฐานข้อมูลค้นหาแถวได้โดยไม่ต้องสแกนทั้งตาราง ownCloud และแอปพลิเคชันต่างๆ กำหนดตาราง คอลัมน์ และดัชนีเป็นส่วนหนึ่งของสคีมา การอัปเดตแกนหลักและแอปพลิเคชันอาจรวมถึงการย้ายสคีมาซึ่งสร้างหรือปรับเปลี่ยนดัชนีเหล่านั้น ดังนั้น การทำให้สคีมาของแอปพลิเคชันเป็นปัจจุบันอยู่เสมอจึงเป็นขั้นตอนแรกที่ปลอดภัยที่สุด

โปรดพิจารณาความแตกต่างต่อไปนี้ก่อนทำการเปลี่ยนแปลงใดๆ:

  • คำเตือนสำหรับผู้ดูแลระบบหรือปัญหาการอัปเกรดที่ทราบ:ให้ดำเนินการตามขั้นตอนการอัปเกรด ownCloud ตามปกติและตรวจสอบผลลัพธ์ การย้ายข้อมูลผ่านการอัปเกรดเป็นวิธีการที่ได้รับการสนับสนุนสำหรับการเปลี่ยนแปลงสคีมาที่ ownCloud หรือแอปจัดหาให้
  • หนึ่งในคำสั่ง SQL ที่ช้าและมีแผนการดำเนินการที่ไม่ eficiente คือ:ให้ผู้ดูแลระบบฐานข้อมูลตรวจสอบคำสั่ง SQL และแผนการดำเนินการ การสร้างดัชนีแบบกำหนดเป้าหมายอาจช่วยได้ แต่คอลัมน์และลำดับที่เสนอต้องตรงกับคำสั่ง SQL และคำจำกัดความของตาราง
  • การอัปโหลดช้า การล็อก หรือการแย่งชิงทรัพยากรอย่างกว้างขวาง:ตรวจสอบธุรกรรม ความหน่วงในการจัดเก็บข้อมูล ความจุของฐานข้อมูล และการล็อกไฟล์ อาการเหล่านี้เพียงอย่างเดียวไม่ได้พิสูจน์ว่าดัชนีหายไป
  • หากระบบ SQLite ขนาดเล็กกลายเป็นระบบหลายผู้ใช้ควรพิจารณาย้ายไปใช้ MySQL/MariaDB หรือ PostgreSQL ownCloud ระบุว่า SQLite เหมาะสำหรับการทดสอบและการใช้งานแบบผู้ใช้คนเดียวขนาดเล็ก ในขณะที่การใช้งานแบบหลายผู้ใช้ในระดับการผลิตควรใช้ฐานข้อมูลเซิร์ฟเวอร์ที่รองรับ

ดัชนีไม่ใช่ตัวปรับความเร็วโดยทั่วไป ดัชนีที่มากขึ้นอาจช่วยปรับปรุงการค้นหาที่เลือกไว้ แต่ก็อาจทำให้ขนาดฐานข้อมูลและเวลาในการเขียนเพิ่มขึ้นด้วย ผลลัพธ์ขึ้นอยู่กับรูปแบบของคำสั่งค้นหา ขนาดตาราง การกระจายข้อมูล กลไกฐานข้อมูล และสถานะของแคช

จัดเตรียมช่วงเวลาการบำรุงรักษาที่ปลอดภัย

  1. บันทึกเวอร์ชันและฐานข้อมูลอย่างละเอียดจากไดเร็กทอรีการติดตั้ง ownCloud ให้รันคำสั่ง `ownCloud install ownCloud` จดบันทึก sudo -u www-data ./occ statusเวอร์ชัน ownCloud เวอร์ชันแอปที่ติดตั้ง ประเภทฐานข้อมูล และคำนำหน้าตารางจากคำสั่ง `ownCloud install config/config.phpownCloud` แทนที่ `<table_name> www-data` ด้วยบัญชีเว็บเซิร์ฟเวอร์บนระบบปฏิบัติการของคุณ
  2. บันทึกการทำงานที่ช้าจดบันทึกหน้าจอหรือแอปที่ได้รับผลกระทบ เวลาโดยประมาณ และว่าความล่าช้านั้นเกิดขึ้นซ้ำหรือไม่ ตรวจสอบบันทึก ownCloud และการวินิจฉัยการสืบค้นที่ช้าของฐานข้อมูลของคุณ เปิดใช้งานการบันทึกการสืบค้นตามคำแนะนำของผู้จำหน่ายฐานข้อมูลของคุณเท่านั้น เนื่องจากบันทึกอาจมีค่า SQL ที่ละเอียดอ่อนและมีขนาดใหญ่ขึ้นอย่างรวดเร็ว
  3. สำรองข้อมูลฐานข้อมูลและการตั้งค่าใช้1วิธีการสำรองข้อมูลที่สอดคล้องกับฐานข้อมูล และตรวจสอบให้แน่ใจว่าสามารถอ่านไฟล์สำรองได้ เอกสารการสำรองข้อมูลของ ownCloud ใช้mysqldump --single-transactionฐานข้อมูลที่เข้ากันได้กับ MySQL เป็นตัวอย่าง ปรับค่าโฮสต์ ผู้ใช้ และฐานข้อมูลให้ตรงกับการตั้งค่าของคุณ อย่าใส่รหัสผ่านฐานข้อมูลลงในประวัติคำสั่งเชลล์หรือรายการกระบวนการโดยตรง
  4. วางแผนการเปลี่ยนแปลงตารางงานอย่างรอบคอบการอัปเกรดสคีมาหรือการสร้างดัชนีอาจใช้การอ่าน/เขียนดิสก์ ซีพียู และการล็อก สำหรับการติดตั้งที่มีการใช้งานมากหรือขนาดใหญ่ ควรแจ้งผู้ใช้เกี่ยวกับช่วงเวลาดังกล่าวและตรวจสอบภาระงานของฐานข้อมูล ใช้โหมดบำรุงรักษา ownCloud เฉพาะเมื่อขั้นตอนการอัปเกรดหรือการบำรุงรักษาที่เกี่ยวข้องกำหนดไว้เท่านั้น อย่าเปิดใช้งานโหมดนี้แทนการสำรองข้อมูล

ดำเนินการอัปเดตสคีมาที่จัดการโดย ownCloud ก่อน

หากมีการอัปเดต ownCloud core หรือแอปที่รอการดำเนินการอยู่ ให้ใช้วิธีการอัปเกรดที่ระบุไว้ในเอกสารสำหรับวิธีการติดตั้งของคุณ ในการติดตั้ง Linux ทั่วไป คำสั่ง OCC จะถูกเรียกใช้ในฐานะผู้ใช้ HTTP จากไดเร็กทอรีรากของ ownCloud เมื่อทำตามคำแนะนำการอัปเกรดด้วยตนเอง คำสั่งจะเป็นดังนี้:

sudo -u www-data ./occ upgrade

อย่าใช้งานกับระบบที่มีการอัปเดตไฟล์เพียงบางส่วน ให้เตรียมไฟล์เวอร์ชันที่ตรงกันก่อน แล้วทำตามขั้นตอนการอัปเกรดอย่างเป็นทางการสำหรับเวอร์ชันนั้น สำหรับการใช้งาน Docker ให้ใช้คำสั่ง OCC ที่ระบุไว้ในเอกสารของคอนเทนเนอร์ แทนที่จะใช้พาธโฮสต์ที่ชี้ไปยังสภาพแวดล้อม PHP ที่แตกต่างกัน

อ่านผลลัพธ์คำสั่งและบันทึกทั้งหมด คำสั่งที่สำเร็จควรเสร็จสิ้นโดยไม่มีการรายงานการย้ายข้อมูลที่ล้มเหลว แต่ไม่ได้หมายความว่าจะแก้ไขปัญหาการค้นหาข้อมูลที่ช้าทุกรายการได้ หากการอัปเดตรายงานข้อผิดพลาดในการย้ายข้อมูล ให้หยุดและตรวจสอบข้อผิดพลาดนั้นแทนที่จะเรียกใช้คำสั่งซ้ำหรือแก้ไขตารางสคีมาด้วยตนเอง ปรึกษาเอกสารการอัปเกรด ownCloud เฉพาะเวอร์ชันและผู้ดูแลแอปเมื่อมีการย้ายข้อมูลแอปเกิดขึ้น

เอกสารอ้างอิง OCC ของ ownCloud 10.15 ระบุคำสั่งฐานข้อมูล เช่นdb:convert-type, db:convert-mysql-charset, และdb:restore-default-row-formatแต่ไม่ได้ระบุdb:add-missing-indicesเนื่องจากความพร้อมใช้งานของคำสั่งอาจแตกต่างกันไปตามรุ่นและโค้ดที่ติดตั้ง คุณสามารถตรวจสอบอินสแตนซ์ของคุณเองได้ด้วยsudo -u www-data ./occ list dbหรือsudo -u www-data ./occ help db:add-missing-indicesหากคำสั่งหลังรายงานว่าไม่รู้จักคำสั่ง อย่าคัดลอกคำสั่งจากบทช่วยสอนของ Nextcloud ไปยัง ownCloud ตรวจสอบเอกสารสำหรับรุ่น ownCloud ของคุณโดยเฉพาะ และใช้เส้นทางการอัปเกรดหรือการย้ายแอปที่รองรับ

เมื่อใดจึงเหมาะสมที่จะใช้ดัชนีแบบแมนนวล?

การใช้ SQL แบบกำหนดเองเป็นตัวเลือกสำหรับผู้ดูแลระบบฐานข้อมูลเพื่อแก้ไขปัญหาการค้นหาข้อมูลที่ได้รับการยืนยันแล้ว ไม่ใช่การปรับแต่ง ownCloud ตามปกติ ขั้นแรก ให้บันทึกคำสั่งค้นหาข้อมูลที่ทำงานช้าอย่างแม่นยำ แล้วใช้เครื่องมือตรวจสอบแผนการทำงานของระบบ เช่นEXPLAINสำหรับ MySQL/MariaDB หรือ PostgreSQL ตรวจสอบว่าแผนการทำงานสแกนแถวจำนวนมากเกินความจำเป็นหรือไม่ และมีการละเลยดัชนีที่มีอยู่หรือไม่ คำนำหน้าตารางของ ownCloud สามารถกำหนดค่าได้ ดังนั้นอย่าคิดว่าชื่อตารางเริ่มต้นด้วยoc_. เสมอไป

ก่อนสร้างดัชนี ให้เปรียบเทียบคอลัมน์ที่เสนอไว้กับตัวกรอง การเชื่อมต่อ และลำดับการจัดเรียงของคิวรี ลำดับคอลัมน์ของดัชนีแบบผสมมีความสำคัญ การทำซ้ำดัชนีที่มีอยู่แล้วอาจเพิ่มต้นทุนโดยไม่ปรับปรุงแผนการทำงาน ขอให้ผู้ดูแลฐานข้อมูลพิจารณาพฤติกรรมของเวอร์ชันฐานข้อมูล การรองรับการสร้างดัชนีแบบออนไลน์หรือแบบพร้อมกัน พื้นที่ว่างในดิสก์ ผลกระทบจากการล็อก และขั้นตอนการย้อนกลับ รายละเอียดเหล่านี้ขึ้นอยู่กับเอ็นจิ้นและเวอร์ชัน ดังนั้นจึงไม่มีคำสั่ง SQL ที่ปลอดภัยเพียงคำสั่งเดียวสำหรับทุกการติดตั้ง ownCloud 10

อย่าแก้ไขตาราง ownCloud หรือลบดัชนีเพียงเพราะชื่อดูซ้ำซ้อน การเปลี่ยนแปลงดังกล่าวอาจขัดแย้งกับการย้ายข้อมูลหลักหรือแอปในภายหลัง และอาจทำให้ฟังก์ชันที่ใช้คำสั่ง SQL ที่แตกต่างจากที่คุณตรวจสอบนั้นใช้งานไม่ได้ จดบันทึกการเปลี่ยนแปลงโครงสร้างข้อมูลด้วยตนเองทั้งหมด และตรวจสอบให้แน่ใจว่าสามารถสร้างใหม่ได้หลังจากกู้คืนหรือย้ายข้อมูลแล้ว ควรเลือกใช้แพทช์หรือแอปเวอร์ชันที่ได้รับการสนับสนุนจาก ownCloud เมื่อดัชนีที่หายไปเป็นข้อบกพร่องของโครงสร้างข้อมูลผลิตภัณฑ์

เปรียบเทียบทางเลือกในระดับฐานข้อมูล

หากแผนงานใช้ดัชนีที่เหมาะสมอยู่แล้ว การเพิ่มดัชนีอีกตัวอาจไม่สามารถแก้ไขความล่าช้าที่เกิดจากจุดอื่นได้ เปรียบเทียบตัวเลือกเหล่านี้กับปัญหาคอขวดที่พบ:

  • MySQL หรือ MariaDB:ตัวเลือกที่เหมาะสมสำหรับระบบที่ผู้ดูแลระบบใช้งานระบบเหล่านี้อยู่แล้ว ตรวจสอบหน่วยความจำบัฟเฟอร์พูล ความหน่วงของดิสก์ การเชื่อมต่อ และแผนการประมวลผลคำสั่งค้นหาที่ช้า ก่อนที่จะเปลี่ยนแปลงการตั้งค่าเซิร์ฟเวอร์
  • PostgreSQL:เป็นทางเลือกที่รองรับสำหรับ ownCloud 10 ในกรณีที่ตัวเชื่อมต่อฐานข้อมูล PHP และการติดตั้งใช้งานได้รับการกำหนดค่าอย่างถูกต้อง แผนการสืบค้นและเครื่องมือบำรุงรักษาดัชนีของ PostgreSQL แตกต่างจาก MySQL ดังนั้นโปรดใช้คำแนะนำเฉพาะสำหรับ PostgreSQL
  • SQLite:ใช้งานง่ายสำหรับการทดสอบหรือการใช้งานขนาดเล็กโดยผู้ใช้คนเดียว แต่ไม่ใช่ตัวเลือกเริ่มต้นสำหรับการใช้งานในระดับการผลิตที่มีผู้ใช้หลายคนทำงานพร้อมกัน การปรับแต่งดัชนีไม่สามารถขจัดข้อจำกัดด้านการทำงานพร้อมกันของการใช้งานได้

การเปลี่ยนเอนจินฐานข้อมูลเป็นโครงการย้ายระบบ ไม่ใช่การปรับแต่งดัชนีอย่างรวดเร็ว ownCloud รองรับocc db:convert-typeการแปลงระบบดังกล่าว โปรดตรวจสอบข้อกำหนดเบื้องต้น สำรองข้อมูลก่อน และทดสอบอินสแตนซ์ที่แปลงแล้วก่อนที่จะแนะนำให้ผู้ใช้ใช้งาน

ตรวจสอบผลลัพธ์และหยุดหากหลักฐานขัดแย้ง

ทำซ้ำการกระทำของผู้ใช้แบบเดียวกันภายใต้เงื่อนไขที่เทียบเคียงกันได้ และเปรียบเทียบระยะเวลาการสืบค้น แผนการดำเนินการ จำนวนแถวที่ตรวจสอบ การรับส่งข้อมูลฐานข้อมูล และภาระงานของเซิร์ฟเวอร์ ตรวจสอบให้แน่ใจว่าหน้าหรือแอป ownCloud ที่เกี่ยวข้องทำงานเสร็จสมบูรณ์ตามปกติ และบันทึกไม่แสดงข้อผิดพลาดของฐานข้อมูลหรือการย้ายข้อมูล ผลลัพธ์ที่เร็วขึ้นในการร้องขอครั้งหนึ่งไม่ได้พิสูจน์ถึงการปรับปรุงโดยรวมเสมอไป ให้เปรียบเทียบการร้องขอที่เป็นตัวแทนหลายๆ ครั้ง และคำนึงถึงแคชที่พร้อมใช้งานด้วย

หากการค้นหาข้อมูลยังคงช้าแม้จะใช้ดัชนีที่เหมาะสมแล้ว ให้ตรวจสอบการล็อก พื้นที่จัดเก็บ ความหน่วงของเครือข่าย ตัวประมวลผล PHP และข้อจำกัดของทรัพยากรฐานข้อมูล หากแผนการสืบค้นหรือโครงสร้างตารางไม่ชัดเจน ให้หยุดก่อนที่จะออกคำสั่ง DDL ด้วยตนเอง และขอให้ผู้ดูแลฐานข้อมูลหรือผู้ติดต่อฝ่ายสนับสนุน ownCloud ตรวจสอบ ผลลัพธ์ที่เชื่อถือได้คือโครงสร้างฐานข้อมูลที่สอดคล้องกับเวอร์ชัน ownCloud ที่ติดตั้งและการค้นหาข้อมูลที่วัดได้ โดยไม่มีการเปลี่ยนแปลงดัชนีที่ไม่ได้รับการติดตาม

ข้อมูลอ้างอิงอย่างเป็นทางการ

ฝากความเห็น

ล้างคำเตือนของ ownCloud Apache .htaccess อย่างปลอดภัย

ล้างคำเตือนของ ownCloud Apache .htaccess อย่างปลอดภัย

ตั้งค่า AllowOverride All เฉพาะสำหรับเว็บรูทของ ownCloud ตรวจสอบความถูกต้องของ Apache vhost ที่ใช้งานอยู่ และโหลดใหม่อย่างปลอดภัยเพื่อกู้คืนกฎ .htaccess

ตั้งค่า ownCloud Enterprise Auditing และตรวจสอบบันทึกข้อมูล

เปิดใช้งานแอป Enterprise Auditing ของ ownCloud กำหนดเส้นทางเหตุการณ์ admin_audit ไปยังไฟล์บันทึกที่ได้รับการป้องกัน และยืนยันว่าการกระทำของผู้ใช้จริงได้รับการบันทึกแล้ว

เชื่อมต่อ ownCloud Infinite Scale กับ Keycloak ด้วย OIDC

เชื่อมต่อ ownCloud Infinite Scale กับ Keycloak ด้วย OIDC

ปรับการเชื่อมต่อข้อมูลผู้ให้บริการโดเมน เว็บไคลเอ็นต์ และข้อมูลผู้ใช้ของ Keycloak ให้ตรงกัน เพื่อให้ ownCloud Infinite Scale สามารถลงชื่อเข้าใช้ผู้ใช้ได้อย่างน่าเชื่อถือทั้งบนเว็บและไคลเอ็นต์บนมือถือ

ย้ายไฟล์ ownCloud ไปยังเจ้าของใหม่โดยไม่สูญเสียสิทธิ์การแชร์

ถ่ายโอนไฟล์ที่คุณเป็นเจ้าของและแชร์ไฟล์ออกโดยใช้คำสั่ง occ ของ ownCloud ทำความเข้าใจว่าอะไรจะยังคงอยู่ และตรวจสอบสิทธิ์การเข้าถึงก่อนลบบัญชีเก่า

เพิ่มความเร็วในการสืบค้นข้อมูล ownCloud 10 ด้วยการจัดการดัชนีอย่างปลอดภัย

เรียนรู้ว่าเมื่อใดที่ดัชนีฐานข้อมูล ownCloud 10 ต้องการการดูแล วิธีการอัปเดตสคีมาที่รองรับอย่างปลอดภัย และเมื่อใดที่การปรับแต่งคิวรีหรือการเปลี่ยนแปลงฐานข้อมูลเป็นวิธีแก้ไขที่ดีกว่า

เชื่อมต่อแชร์ SMB/CIFS ใน ownCloud โดยไม่ต้องใช้การเชื่อมต่อ Linux

เชื่อมต่อแชร์เครือข่าย Windows หรือ Samba กับ ownCloud ผ่านที่เก็บข้อมูลภายนอก ตรวจสอบข้อมูลประจำตัว และแก้ไขปัญหาโฟลเดอร์ที่ไม่สามารถเข้าถึงได้อย่างปลอดภัย

ลบเวอร์ชันไฟล์ ownCloud อย่างปลอดภัยด้วยคำสั่ง occ

ลบเวอร์ชันไฟล์ ownCloud อย่างปลอดภัยด้วยคำสั่ง occ

ลบไฟล์เวอร์ชัน ownCloud Server Classic ที่จัดเก็บไว้ทั้งหมดสำหรับบัญชีเดียวหรือผู้ใช้ทั้งหมด และแยกความแตกต่างระหว่างการลบแบบสมบูรณ์กับการหมดอายุตามระยะเวลาการเก็บรักษา

การเชื่อมต่อ ownCloud บนมือถือถูกปฏิเสธใช่หรือไม่? ตรวจสอบ URL และการเข้าถึง

การเชื่อมต่อ ownCloud บนมือถือถูกปฏิเสธใช่หรือไม่? ตรวจสอบ URL และการเข้าถึง

ตรวจสอบหาสาเหตุการปฏิเสธการเชื่อมต่อ ownCloud บนมือถือโดยตรวจสอบ URL ของเซิร์ฟเวอร์ เครือข่ายโทรศัพท์ จุดเชื่อมต่อ HTTPS และบันทึกของเซิร์ฟเวอร์ตามลำดับที่ถูกต้อง

เรียกใช้งานงานเบื้องหลังของ ownCloud ได้อย่างน่าเชื่อถือด้วยตัวจับเวลา Systemd

แทนที่การเรียกใช้งานงานตามความต้องการด้วยตัวจับเวลา systemd ที่เรียกใช้คำสั่ง occ system:cron ที่ ownCloud รองรับทุกๆ 15 นาที

กู้คืนการซิงค์ WebDAV ของ ownCloud โดยการค้นหาเส้นทางที่เสียหาย

ตรวจสอบการร้องขอ WebDAV ผ่าน Apache, Nginx หรือพร็อกซีแบบย้อนกลับ จากนั้นยืนยันว่าการซิงค์ ownCloud ทำงานได้โดยใช้การทดสอบ PROPFIND ที่มีการตรวจสอบสิทธิ์