กลยุทธ์ที่ดีสำหรับการวางแผนการเติบโตของฐานข้อมูล WordPress คืออะไร?


9

หวังว่าจะมีข้อเสนอแนะเกี่ยวกับหัวข้อของการปรับให้เหมาะสมและอยู่ด้านบนของประสิทธิภาพขณะที่ฐานข้อมูล WordPress เติบโต ... เพื่อวาดภาพ .... สมมติว่าคุณมีเว็บไซต์ WordPress / Buddypress MU ที่เริ่มต้นที่ประมาณ 150kb (ติดตั้งวานิลลา) ... เมื่อเวลาผ่านไปผู้ใช้เพิ่มบล็อกฟอรั่มโพสต์และความคิดเห็นและฐานข้อมูลเพิ่มขึ้นเป็น 5mb .... จากนั้น 10mb ในปีหน้า .... นอกจากนี้สมมติว่าการควบคุมโฮสติ้งนั้นเป็นการตั้งค่ามาตรฐาน colocated เช่น Cpanel หรือ Plesk

  • จำนวนรายการในฐานข้อมูลส่งผลกระทบต่อประสิทธิภาพการทำงานของเว็บไซต์ Front-end อยู่ที่ใด
  • คุณสามารถทำอะไรได้บ้างในฐานะผู้จัดการเว็บไซต์เพื่อให้การทำงานนี้ราบรื่นเมื่อฐานข้อมูลของคุณเติบโต
  • สิ่งที่คุณคาดหวังในแง่ของประสิทธิภาพหลังจากปีที่ 5 เมื่อฐานข้อมูลของคุณใหญ่ 500 - 600mb?

ขอบคุณสำหรับคำติชมใด ๆ ที่คุณอาจมีต่อเรือที่แน่น

ความนับถือ,

เอส


3
คุณได้ถามคำถาม 7 ข้อและตอบรับเท่านั้น 1. ไม่ใช่สถิติที่ดี :-(

8
25mb ไม่มีอะไร คุณควรกังวลเกี่ยวกับขนาดฐานข้อมูลเมื่อถึง GB
Dunhamzzz

ขอบคุณสำหรับความคิดเห็นของคุณ หากเรามีปัญหาเกี่ยวกับประสิทธิภาพที่ 500 mb อาจเป็น บริษัท โฮสติ้งของเรา ป.ล. กลับไปและได้รับคำตอบในทุกคำถาม
Simon

คำตอบ:


4

คำถามเฉพาะของคุณ:

1) ไม่มีข้อ จำกัด อย่างเข้มงวดกับ "จำนวนรายการ" ฐานข้อมูลที่อาจมีอยู่ก่อนที่ประสิทธิภาพจะได้รับผลกระทบ ประสิทธิภาพขึ้นอยู่กับฮาร์ดแวร์และการกำหนดค่าของคุณเช่นเดียวกับขนาดและโครงสร้างของฐานข้อมูล

2) หากคุณกังวลเกี่ยวกับความสามารถในการปรับขนาดของเลเยอร์ DB ของคุณคุณสามารถเรียกใช้ในคลัสเตอร์หรือบนกล่องเมฆหรือ VPS ที่อนุญาตให้ปรับขนาดได้ หากฐานข้อมูลของคุณเริ่มซบเซาคุณสามารถเพิ่มขนาด (โดยปกติจะมีค่าใช้จ่ายเพิ่มเติม) ตัวเลือกเหล่านี้จะเพิ่มค่าใช้จ่าย แต่เป็นวิธีที่ดีที่สุดในการปรับขนาดฐานข้อมูล

3) สิ่งนี้ขึ้นอยู่กับการตั้งค่าโฮสติ้งและสถาปัตยกรรมฐานข้อมูลของคุณ แต่โดยทั่วไป (เว้นแต่คุณจะอยู่ในกล่องราคาถูกจริงๆ ) ฉันจะไม่กังวลเกี่ยวกับฐานข้อมูล WordPress 30MB WordPress ทำงานได้ดีในการทำดัชนีตารางและแม้แต่การกำหนดค่า OOB MySQL ก็ควรจัดการกับข้อความค้นหา WordPress บนฐานข้อมูลขนาดนี้ได้อย่างง่ายดาย เมื่อคุณเข้าสู่กิกะไบต์ - นั่นคือเมื่อคุณอาจต้องดูตัวเลือกการเพิ่มประสิทธิภาพอย่างจริงจัง

โดยทั่วไป:

หากคุณกังวลเกี่ยวกับประสิทธิภาพการทำงานให้ปรับการตั้งค่า MySQL ที่มีอยู่และ / หรือตั้งค่าเลเยอร์แคช การแคชสามารถลดภาระใน MySQL ได้อย่างมาก (โดยเฉพาะกับเว็บไซต์ WordPress เนื่องจากโดยทั่วไปแล้วจะทำการสืบค้น DB จำนวนมาก)

หากหลังจากที่คุณปรับแต่ง MySQL อย่างถูกต้องและตั้งค่าเลเยอร์แคชที่เหมาะสมคุณยังคงกังวลเกี่ยวกับการขยายตัวของการกำหนดค่าฮาร์ดแวร์ของคุณคุณสามารถกำหนดนโยบายการลบเนื้อหาหลังจาก x จำนวนเวลา

ไม่มีสิ่งนี้เฉพาะกับ WordPress และฉันไม่แน่ใจว่าคำถามนั้นมีคำตอบใด ๆ ที่ไม่สามารถนำไปใช้กับเว็บไซต์หรือแอปพลิเคชันใด ๆ ที่ทำงานบน LAMP stack แต่บางคนอาจมีคำแนะนำเกี่ยวกับโครงสร้างตาราง MU หรือเทคนิค DB เฉพาะ WP อื่น ๆ ... ฉันไม่รู้


4

อย่างเคร่งครัดจากมุมมองของ MySQL ฉันมีคำแนะนำเกี่ยวกับวิธีการปรับปรุงการแคชข้อมูล / ดัชนีสำหรับอินสแตนซ์ MySQL

โปรดทราบว่ามีเครื่องมือจัดเก็บข้อมูลหลักสองตัวสำหรับ MySQL

  • MyISAM
  • InnoDB

กลไกการแคชแตกต่างกัน มีบางอย่างที่คุณสามารถทำได้เพื่อปรับแต่งสำหรับเครื่องมือจัดเก็บข้อมูลที่คุณเลือก

MyISAM

MyISAM แคชหน้าดัชนีเท่านั้น มันไม่เคยแคชข้อมูล คุณสามารถทำสองสิ่งเพื่อปรับปรุง I / O สำหรับตาราง MyISAM

MyISAM Improvement # 1

ตาราง MyISAM ใด ๆ ที่มีคอลัมน์ VARCHAR สามารถแปลงภายในเป็น CHAR โดยไม่ต้องสัมผัสการออกแบบเริ่มต้น สมมติว่าคุณมีตารางชื่อ mydb.mytable และคุณต้องการปรับปรุง I / O ให้ทำตามขั้นตอนต่อไปนี้:

ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;

สิ่งนี้จะเพิ่มขนาดของตาราง 60% -100% แต่จะให้ประสิทธิภาพการทำงานเพิ่มขึ้น I / O 20-30% โดยไม่มีการเปลี่ยนแปลงอะไรเลย ฉันเขียนเกี่ยวกับเรื่องนี้มาก่อนใน DBA StackExchange:

การปรับปรุง MyISAM # 2

คุณต้องเพิ่ม MyISAM Key Cache (ตามขนาดโดยkey_buffer_size ) เรียกใช้แบบสอบถามนี้โปรด:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')) AA ) A,
(SELECT 2 PowerOf1024) B;

สิ่งนี้จะแสดง key_buffer_size ในอุดมคติของคุณตามชุดข้อมูลปัจจุบันของคุณ

InnoDB

InnoDB เก็บทั้งข้อมูลและดัชนี หากคุณแปลงข้อมูลทั้งหมดเป็น InnoDB และกำลังใช้งาน WordPress จากฐานข้อมูล InnoDB ทั้งหมดคุณต้องปรับขนาด InnoDB Buffer Pool ของคุณ (ขนาดด้วยinnodb_buffer_pool_size ) เรียกใช้แบบสอบถามนี้โปรด:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;

สิ่งนี้จะแสดง key_buffer_size ในอุดมคติของคุณตามชุดข้อมูลปัจจุบันของคุณ

ประมาณการ

หากคุณคาดการณ์ว่าชุดข้อมูลของคุณจะเพิ่มขึ้น 20 เท่าให้เพิ่มขึ้นหลายเท่าที่แบบสอบถามนี้แนะนำโดย 20 สมมติว่าชุดข้อมูล MyISAM ของคุณคือ 15MB และ 3MB คือผลรวมของดัชนีของคุณ หากคุณประเมินว่าคุณจะมีข้อมูลมากถึง 20 เท่าให้ตั้ง key_buffer_size เป็น 60MB เช่นนี้ใน /etc/my.cnf:

[mysqld]
key_buffer_size=60M

จากนั้นรีสตาร์ท MySQL สิ่งเดียวกันนี้จะนำไปใช้กับ InnoDB Buffer Pool

หากข้อมูลทั้งหมดของคุณเป็น InnoDB คุณจะต้องดำเนินการล้างข้อมูลเต็มรูปแบบของโครงสร้างพื้นฐาน InnoDB คุณที่ผมโพสต์ใน StackOverflow


2

จำนวนรายการในฐานข้อมูลส่งผลกระทบต่อประสิทธิภาพการทำงานของเว็บไซต์ Front-end อยู่ที่ใด

เมื่อแบบสอบถามเริ่มกดขีด จำกัด ทรัพยากรของบัญชีโฮสติ้งของคุณ

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

จับตาดูการใช้ทรัพยากร ทำตามขั้นตอนเพื่อเพิ่มทรัพยากรและ / หรือเพิ่มประสิทธิภาพการใช้งาน

คุณคาดหวังอะไรในแง่ของประสิทธิภาพหลังจากปีที่ 5 เมื่อฐานข้อมูลของคุณใหญ่ถึง 25 - 30mb?

ไม่ควรเปลี่ยนแปลงประสิทธิภาพในฐานข้อมูลขนาดเล็กนั้น

หากคุณคาดหวังว่าเว็บไซต์ของคุณจะเติบโตอย่างช้าๆคุณมีเวลาอีกมากในการเรียนรู้วิธีจัดการการเติบโต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.