Zend_Db שימוש נכון למיטב הביצועיםZend_Db הינה בסיס שכבות למחלקות אשר מטפלות במסדי נתונים, ונועדה
כדי לתת API נפוץ לפעולות אשר נעשות על גבי ה SQL. Zend_Db_Table
הינה מחלקת מידע לניתוב טבלאות מסדי נתונים, אשר מהוות בתור מחלקה כשכבה עליונה לכל המחלקות אשר נמצאות
תחתיה, שנועדו למטרת ביצוע פעולות טבלאויות מול מסד הנתונים.
מאחר ואלו מחלקות שאר מהוות שכבה עליונה לכל המחלקות תחתיהם, "והקסם" שהם מבצעות ברקע כדי לבצע את הפעולות שלהם,
הם לעתים יכולים לגרום לבעיות משמעותיות בביצועים של המערכת.
אין ניתן להפחית את כמות המשאבים שצורכת המחלקה של Zend_Db_Table
בזמן שליפת נתונים אודות טבלה/טבלאות?
כדי לייעל ולפשט את השימוש כמה שניתן, ועדיין לתמוך בתרשים מסד הנתונים גם כשהוא משתנה תוך כדי פיתוח,
Zend_Db_Table מבצעת מספר דברים מאחורי הקלעים: בשימוש הראשון,
היא שולפת את כל התרשים של מסד הנתונים ושומרת את זה באובייקט מסויים לשימוש חוזר. פעולה זו היא בדרך כלל צורכת הרבה משאבים ויכולה לגרום
לצוואר בקבוק במערכות, ולא משנה באיזה מסד נתונים משתמשים.
למרבה המזל ישנם טכניקות שונות לשיפור התפעול במצבים כאלו.
שימוש במטמון אודות הנתונים של המסדZend_Db_Table יכולה להשתמש ב Zend_Cache כדי לשמור את הנתונים אודות התרשים של מסד הנתונים שנשלף במטמון.
בדרך זו יהיה מהיר יותר לגשת לנתונים ולצרוך פחות משאבים בכל פעם שמנסים לגשת לנתונים אודות מסד הנתונים שנשלפו.
הדוקומנטציה של Zend_Db_Table
מכילה מידע אודות שימוש במטמון במחלקה זו..
כתיבה ידנית של המידע אודות הטבלה בהגדרות של אותה טבלה
מאז גרסא 1.7.0, Zend_Db_Table מאפשר תמיכה ב כתיבה ידנית של המידע אודות הטבלה בהגדרות של אותה טבלה.
זהו שימוש מתקדם יותר, ורצוי להשתמש בו רק כשתרשים הטבלה ידוע מראש וסביר להניח שהוא לא השתנה מאוחר יותר, או שתוכלו להמשיך ולעדכן את ההגדרות של הטבלה בכל פעם שתרשים הטבלה השתנה.
פקודות SQL אשר נוצרו בעזרת Zend_Db_Select לא משתמשות באינדקסים של הטבלה; כיצד ניתן לשפר זאת?Zend_Db_Select בהחלט עושה עבודה טובה במה שהוא אמור לעשות.
אך למרות זאת, במידה והנכם מבצעים שאילתות מסובכות למסד הנתונים אשר מכילות חיבורים בין טבלאות ותתי שאילתות, זה יכול להיות לפעמים תמים בנושא זה.
כתבו את פונקציות השליפה כנגד מסד הנתונים בעצמכם
התשובה האמיתית היחידה היא כתיבת פונקציות שליפת הנתונים שלכם בעצמכם;
Zend_Db לא מחייב שימוש ב Zend_Db_Select, לכן כתיבת שאילות שליפת הנתונים שלכם בעצמכם היא בהחלט גישה תקינה,
הריצו את פקודת ה EXPLAIN על גבי השאילתות שלכם על מנת לבדוק כמה וכמה גישות
עד שתוכלו להגיע לשאילתה עם התוצאות הטובות ביותר.
אם השאילתה דורשת הזנה של משתנים בתור נתונים, השתמשו ב"שומרי מקום" בשאילתות, והשתמשו בשילוב של
vsprintf ו array_walk כדי להזין את אותם המשתנים אל השאילתות.
לדוגמא:
getAdapter().
$sql = vsprintf(
self::SELECT_FOO,
array_walk($values, array($adapter, 'quoteInto'))
);
]]>