Deprecated: Creation of dynamic property CF\WordPress\DataStore::$logger is deprecated in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php on line 23

Deprecated: Creation of dynamic property CF\WordPress\Proxy::$pluginAPI is deprecated in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/Proxy.php on line 31

Deprecated: Creation of dynamic property SyntaxHighlighter::$brush_names is deprecated in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/syntaxhighlighter/syntaxhighlighter.php on line 248

Deprecated: Creation of dynamic property SyntaxHighlighter::$specialchars is deprecated in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/syntaxhighlighter/syntaxhighlighter.php on line 326
המכללה | אופטימיזציה של מסד הנתונים
Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

אופטימיזציה של מסד הנתונים

אני יודע שקצת הזנחתי את הסידרת כתבות הזו ואת הבלוג בכלל, הפוסט הזה שוכב אצלי בטיוטא כבר שבועיים ואני מתלבט אם לפרסם אותו או לא. מקורה של ההתלבטות היא העובדה שהפוסט הזה נוגע ישירות במסד הנתונים של הבלוג. אם תמחקו בטעות קבצי מערכת של וורדפרס תמיד ניתן להעלות אותם בחזרה אל השרת והעסק יחזור לעבוד, אבל מחיקה של פריט חיוני במסד הנתונים, במיוחד אם לא יודעים מה נמחק יכולה לכאוב עד מאוד.

ולכן, למרות שבפועל לא מדובר פה בפעולות מסובכות אני חוזר, מזהיר ומתרה – אם אתם לא יודעים להתעסק עם מסד נתונים, אם אין לכם מושג מה התוצאות של הפעולות שלכם יכולות לעשות ואם אין לכם גיבוי – פשוט תתעלמו מהפוסט הזה או שתפנו אל מי מאיתנו שמתעסק בזה כמקצוע (בשליפה מהמותן, חוץ מעצמי אני יכול לחשוב על חנית ועל רויטל, אבל תמיד אפשר להתיעץ בקבוצה הגוגלית).

ולעניין – אופטימיזציה לוורדפרס.

ככלל, אחד היתרונות בקוד פתוח הוא שהרבה עיניים עוברות על הקוד ולכל אחד מומחיות משלו. אני מניח שבמשך השנים בהן וורדפרס מפותחת עברו על הקוד גם אי אלו מומחי DB שניסו לעשות את האופטימיזציה האידיאלית לשאילתות. אני מניח שיש שאילתות שעדיין ניתן לשפר, שלא לדבר על כך שאני משוכנע שיש שאילתות מרוכבות שניתן להחליף ב view תואם ועדיין אנחנו לא הולכים לטפל בקוד של וורדפרס, רק לנקות קצת את כל הג'אנק שהצטבר בטבלאות.

החל מ 2.5 הוסיפו בוורדפרס את האפשרות ל Revision – גירסאות קודמות של המסמך. השינוי הזה נועד לאפשר לעורך לחזור אחורה ולהשוות את הניסוח הנוכחי אל מול הקודם. זה כמובן גם מאוד עוזר כשיש גיבוי אם בטעות מחקתם פיסקה או שתיים (או את כל העמוד) ואתם לא רוצים להתחיל לכתוב הכל מהתחלה.
אבל מה לגבי פוסטים שכבר פורסמו? וורדפרס שומרת את הגירסאות הקודמות גם עבור פוסטים שהסטטוס שלהם הוא פורסם – פעולה שמגדילה את נפח מסד הנתונים ולכן מאיטה מעט את עבודתו. בבלוגים קטנים עם כמות קטנה של פוסטים חודשיים (מרכין ראשי בבושה) העסק פחות רלוונטי, אבל בלוגים גדולים יותר כגון חורים ברשת / חדר 404 / הגלוב בוודאי סובלים קשה יותר מהבעיה הזו. הפיתרון הוא פשוט – למחוק את כל הגירסאות הקודמות של פוסטים שכבר פורסמו. דרך phpMyAdmin (או כל מערכת ניהול DB שאתם עובדים איתה) מריצים את השאילתה הבאה. חשוב לוודא שמסד הנתונים שנבחר הוא של וורדפרס וכמובן שהתחילית שהגדרתם לטבלאות היא wp (אם לא צריך להתאים את wp_posts).

DELETE FROM `wp_posts` WHERE `post_type` = ‘revision’

אגב, אם אינכם משתמשים בגירסאות קודמות, עדיף לכבות את הפונקציה הזו. הוסיפו בקובץ ה wp_config,php את השורה הבאה:

define('WP_POST_REVISIONS', false);

אופטימיזציה של מסד הנתונים

אחרי שבוחרים מסד נתונים לעבודה ב PhpMyAdmin (בעמודה השמאלית) נפתחת רשימת הטבלאות הקיימות. בתחתית הרשימה ישנו לינק "select all” ולחיצה עליו תבחר את כל הטבלאות. משמאלו, בתפריט הנגלל, נבחר בשיא הזהירות ב optimize table – ומכאן שאר העבודה היא של mysql. מתחת למנוע MySql מוחק את טבלאות האינדקס שהוא שומר עבור כל טבלה ובונה אותן מחדש בצורה אופטימלית.

שמירת שאילתות

הסעיף הזה קרוב לוודאי לא נוגע ברובנו, הוא מיועד למי שיש לו גישה לקבצי ההגדרות של mysql משהו שקרוב לוודאי שבחיים לא יהיה לכם בשרת שיתופי. אבל אם יש לכם איכסון יעודי / שרת ביתיי / כל פיתרון אחר – אפשר להשתמש במנגנון הקאשינג של MySql על מנת לשמור את התוצאות של שאילתות חוזרות ונשנות. כך למשל, במקום להריץ בכל פעם את השאילתה שמבקשת את הפוסטים לעמוד הראשי ניתן לשלוף את כל המידע הזה במכה ממסד הנתונים.

בשביל זה צריך לערוך את קובץ my.conf (באובונטו הוא ב etc/mysql/my.conf/ ) ולהוסיף אליו את השורות הבאות:

query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 32M

כך בעצם אנחנו יוצרים מאגר זיכרון בנפח של 32 מגה המשמש לקאשינג של השאילתות. כאמור, זה יותר רלוונטי למי שיש לו שרת פרטי, אבל יעזור עד מאוד.

לדרג את הפוסט
0

Posted

in

by

Comments

2 תגובות על “אופטימיזציה של מסד הנתונים”

  1. תמונת פרופיל של ליאור שיאון

    בזמנו הסתכלתי באינדקסים של וורדפרס והם לא היו משהו. היום הם כבר נכונים?

  2. תמונת פרופיל של רמי

    ליאור, אתה יכול לראות את כל האינדקסים בקודקס:
    http://codex.wordpress.org/Database_Description

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *


Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/DataStore.php:23) in /home/nitzan_n2b/n2b.org/wordpress/wp-content/plugins/cloudflare/src/WordPress/HTTP2ServerPush.php on line 79