29-06-2011, 16:45
|
|
|
חבר מתאריך: 13.02.09
הודעות: 365
|
|
ביצועים של addBatch עם MySQL ו JDBC
בפרוייקט מסויים אנחנו עובדים בסביבת לינוקס, ג'אווה, MySQL, JDBC. ביצועים טובים הם קריטיים. עבור הרכיב שמוסיף ומעדכן רשומות בכמויות אנחנו מתלבטים בין שתי אפשרויות, שתיהן סביב עדכון ב batch:
1. ביצוע סדרה של addBatch ל statement יחיד כאשר בכל קריאה מועברת פקודת SQL כמחרוזת וכן פרמטרים, ולבסוף executeBatch אחד להכל. למה זה טוב? כי כל סוגי העדכון/הוספה נכנסים לאותו batch. למה זה רע? כי לא נעשה prepare מראש לפקודות ה SQL.
2. ביצוע סדרה של addbatch לכמה preparedStatements שונות, כאשר כל אחת הוכנה מראש עם פקודת SQL שונה, ולבסוף executeBatch נפרד לכל preparedStatement. למה זה טוב? כי preparedStatement יותר יעיל. למה זה רע? כי יש לנו כשישה סוגי פקודות, מה שאומר שישה batchs נפרדים.
בשני המקרים העדכונים עטופים בטרנזקציה שנעשה לה commit רק בסוף.
למישהו יש ידע מעשי איזו מהאפשרות עדיפה במקרה כזה מבחינת ביצועי מעבד, מסד הנתונים, וסך כל משך העדכון (על השעון)?
|