מהיר יותר אמין יותר מאובטח יותר MySQL 5.6 - ilDBA Portal

מהיר יותר אמין יותר מאובטח יותר MySQL 5.6

08/05/2013 | פורסם על ידי

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

השינויים בגרסה החדשה הופכים את גרסה זו לשונה מהותית מהגרסאות קודמות – חלק גדול מהשינויים נעשו בצורה רוחבית בכל המוצר וזה כולל שינויים ב-kernel וב-storage engines השונים.

במאמר זה אני מתייחס רק לשיפורים בגרסה החינמית (Generally Available) ולא בגרסת ה-Enterprise.

 השינויים העיקריים הם:

  • שיפור ביצועים דרמטי של כ 150 אחוז ב TPC (transactions per second)
  • שינויים דרמטיים באופטימיזר,שיפור ב זמן ה הרצה ושיפורים בדיאגנוסטיקה של ההרצה
  • יכולת תשאול NOSQL למנוע ה-InnoDB דרך מנגנן ה-Memcached, יכולת מעניינת מאוד שמאפשרת יכולת שאילתה ב-key – value ו-SQL query לאותו סט של מידע.
  • שיפורים רבים ביעילות של מנגנון הרפליקציה.
  • שיפורים ותוספות לסכמת ה ביצועים (performance_schema)
  • שיפורים שונים במנגנוני האבטחה.

יכולת גדילה לינארית:

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

שיפורים ב InnoDB:

ה-InnoDB מנוע האגירה הדיפולטי של  MySQL מאז שאורקל רכשה את המוצר (בגרסה 5.5) והוא כנראה גם המנוע הנפוץ ביותר בין מנועי האגירה ב-MySQL. בגרסה החדשה התווספו תיקונים משמעותיים למנוע זה שמשפרים את זמן התגובה מורידים את ריבוי הנעילות שהיו נקודת כשל במנוע. השיפורים הם שיפור של מנגנון הנעילות של בMySQL kernel וכתיבה מחדש של מנגנון הפתילים של ה InnoDB, בכך לשפר את יכולות ניהול ה פתילים והנעילות שלו. שיפורים נוספים  כוללים  הוספת מנגנון פתיל (טרד) ניפרד ל flushing, פיצול ה purge לכמה פתילים נפרדים, נוסחה חדשה ל פעולות ה-hashing (שהיו צוואר בקבוק של CPU), שיפור ה-contention  במנגנון ה-buffer pool, שיפור האופטימיזר של השאילתות ע"י דגימת סטטיסטיקות יותר רלוונטיות ובזמנים יותר קצרים.

התיקונים האלה הביאו לשיפור משמעותי עד ל-150 אחוזים במבחני TPS בשרתי לינוקס ולשיפור של 47 אחוזים בשרתי Windows 2008. כדאי להזכיר שזהו שיפור משמעותי נוסף בשרתי ה-Windows ונזכיר שגם הגרסה הקודמת (5.5) הביאה שיפור משמעותי ביותר לשרתים הללו (כ-200 אחוז שיפור ביצועים).

שיפורים נוספים ב InnoDB:

יכולת יצירת אינדקס ב online ללא נעילה כללית של הטבלה ויכולת לעשות פעולות DDL על טבלה ללא נעילות כלליות.

https://blogs.Oracle.com/MySQLInnoDB/entry/online_alter_table_in_MySQL

אינדקס טקסט חופשי (מורפולוגי)  ל-InnoDB בדומה ל MyISAM FTS יכולת לחיפוש טקסט מתקדמת האינדקס החדש בעל יכולת לחיפוש טקסט חופשי וזיהוי מורפולוגי (בדומה ל Oracle text).

יכולת העתקה של tablespace-ב InnoDB (סוף סוף): כיום ישנה בעיה כאשר מבצעים העתקה של tablespace לשרת אחר ע"י הפקודה FLUSH TABLES WITH READ LOCK. למרות שהפקודה סיימה בהצלחה, הפקודה לא ביצעה באמת flush של כל המידע ל tablespace והדבר יצר בעיה להעתיק את ה tablespace כגיבוי או כ export. בגרסה החדשה תוקנה הבעיה וכעת ניתן לעשות flush ל-tablespace. בנוסף, החל מהגרסה 5.6 ניתן יהיה לייצר datafile בכל ספריה  שנרצה ולבצע flush ו-read lock ואז להעתיק את ה-tablespace (לדוגמה, לצורך יצירת גיבוי)  או להעביר את ה tablespace למאגר חדש. יכולת נוספת היא קובץ הגדרות cfg של הטבלה  שנוצר כאשר מריצים FLUSH TABLES WITH READ LOCK; ואז כל מה שנישאר הוא לבצע ALTER TABLE IMPORT TABLESPACE;.

https://blogs.Oracle.com/MySQLInnoDB/entry/InnoDB_transportable_tablespaces

שיפורים בקריאה בלבד מ InnoDB:

לגרסה החדשה התווסף שיפור משמעותי לפעולות קריאה בלבד לפעולות שנחשבות כ "ייצור דוחות" או "פעולות קריאה פשוטות של web"  האופטימייזר מאופשר כאשר הפרמטר autocommit הוא ב-on או ע"י הרצת הפקודה START TRANSACTION READ ONLY;

לפי בדיקות סף שנעשו על ידי אורקל ובמקביל, על ידי כמה בלוגרים עצמאיים נראה שהדבר משפר את פעולות הקריאה בלמעלה מ-230 אחוזים בסביבת לינוקס וביותר מ-65 אחוזים בסביבה של Windows 2008.

לבדיקות ביצועים נוספות שנעשו:

http://dimitrik.free.fr/blog/archives/2012/07/MySQL-performance-readonly-adventure-in-MySQL-56.html

http://mikaelronstrom.blogspot.co.il/2012/06/MySQL-56-makes-leapfrog-in-performance.html

שיפורים באופטימיזר:

השיפורים העיקריים באופטימזר של MySQL 5.6  הם:

  • התווספו יכולות EXPLAIN גם ל INSERT ו-UPDATE ו-DELETE תוספת מצויינת שתקל על כתיבת שאילתות מציאת צווארי בקבוק
  • יכולת ליצור trace לאופטימיזר בכדי להבין את יכולת קבלת ההחלטות שלו.
  • התווספה יכולת לזיהוי של subquery ואופטימיזציה שלהן אין צורך יותר לפרק subquerys-ל joins נפרדים האופטימיזר יזהה subquerys ויוסיף להם semi join בצורה אוטומטית.
  • שיפור של שאילתות ORDER BY ו-LIMIT האופטימיזר יזהה את ה LIMIT ויוכל לבצע את השאילתה במעבר אחד על הטבלה,לפי אורקל השיפור הוא עד לפי 4.

http://MySQLoptimizerteam.blogspot.co.uk/

התיקונים הנ"ל הביאו לשיפור משמעותי (עד ל-150 אחוז ב TPS לשרתי לינוקס ול עד 47 אחוז TPS לשרתי Windows 2008)

שיפורים ברפליקציה:

שימוש ב-MySQL BINLOG Replication נחשבת הצורה הנוחה ביותר והטובה ביותר ליצירת גיבויים ויצירת שרידות לשרת ה MySQL. זוהי גם הדרך השכיחה ביותר ליצירת רפליקציה ל שרת ה-MySQL.

בגירסה החדשה התווספו המון שינויים שהופכים את הרפליקציה לנוחה יותר מהירה יותר ואמינה יותר  השיפורים החשובים יותר הם:

  • GTID – מספר גלובלי למצב הרפליקציה עוזר לאתר את העבד העדכני ביותר ממערך הרפליקציה וגם יעיל במעקב על תהליך הרפליקציה ובתהליכי תיקון אוטומטי של הרפליקציה במקרה של נתק בתקשורת בין העבד ל אדון או במקרה של נפילה בלתי מתוכננת
  • בדיקת Checksums למידע שמתקבל על גבי ה עבד, שומר של האחידות המידע על העבד ומונע ישום של  מידע  לא קונסיסטנטי על העבדh
  • Binlog חסין מנפילות – ה עבד יכול לבצעה חזרה לאחור למצב הלפני נפילה ולהמשיך אוטומטית בתהליך הרפליקציה, יכולת שהופכת את החזרה מנפילה לא מתוכננת לאוטומטי.
  • יכולת ליצור דחיה ביישום הרפליקציה  ע"י דחיה בניגון ה bilog אנו יכולים ליצור הפרש זמנים בין השרת הראשי  לעבד ובכך ליצור חסם נגד טעויות אנוש.
  • כלים חדשים לניהול הרפליקציה שנכתבו בשפת ה python שנועדו להקל על ניהול הרפליקציה ולניטור של הרפליקציה ובכך ליצור מערכת של high-availability אוטומטית לחלוטין, הכלים החדשים.

יכולת חדשות של performance schema:

performance_schema היא סכמה שמכילה נתונים על ביצועי השרת היא מערכת עזר חשובה מאוד למציאת בעיות ביצועים ותקלות ב MySQL.
יכולות חשובות שהתווספו ל performance_schema  בגירסה 5.6 הם:

  • Statements/Stages – מה הם השאילתות שדורשות את מירב המשאבים מן המערכת ואיזה משאבים הם צריכים
  • Table/Index I/O, Table Locks – איזו טבלה – אינדקס יוצרים את העומס הגדול ויתר מבחינת IO או נעילות
  • Users/Hosts/Accounts – איזה משתמש יוצר את העומס הגדול ביותר.
  • Summaries – סטטיסטיקות מסוכמות על משתמשים, שאילתות, תהליכים.

אבטחת מידע:

  • שינוי של הצפנת הסיסמה הדיפולטי ל-SHA-256 בנוסף לערך רנדומלי (salt) הפרוטוקול החדש מאובטח יותר מהפרוטוקול הקודם SHA1 ללא salt.
  • יכולת להצפין את הסיסמה בקובץ ה.mylogin.cnf ע"י הפרמטר " scrambled"  ובכך להריץ פקודות מתוך מערכת ההפעלה ללא חשיפה של הסיסמה.
  • סוף עידן הסיסמאות ב clear text בלוגים, מהגרסה 5.6 אין יותר סיסמאות חשופות ב binlog וב general query log/slow log
  • יכולת לגרום למשתמש להחליף סיסמה בהתחברות הבאה.
  • יכולת חשובה שתחסוך סקריפטים רבים היא היכולת להכיל  מדיניות סיסמאות למשתמשים מסוימים

http://dev.mysql.com/doc/refman/5.6/en/validate-password-plugin.html

לסיום, משהו קטן ונחמד:

מהגירסה 5.5 ל Windows התוסף תוסף קטן ונחמד לשליטה על השרתים שרצים על מערכת ההפעלה הוא ניקרא Windows-notifier והוא עוזר מאוד במיוחד אם מריצים את ה MySQL על המחשב האישי .

http://dev.mysql.com/doc/refman/5.5/en/Windows-notifier.html

לסיכום:

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

נתראה ברשומה הבאה!

ברוך אוסובסקי,

Baruch@brillix.co.il

4 תגובות ל- “מהיר יותר אמין יותר מאובטח יותר MySQL 5.6”

commenter

מאמר מצויין,
מרבה תוספות מרבה דאגות, האם רמת  היציבות של המערכת נפגע כתוצאה מעוצמת השינויים?

commenter

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

ברוך .

David Itshak | 28/09/2013 בשעה 22:53
commenter

חג שמח לכולם !

מוזמנים לכנס הבא של Oracle & ilOUG DBA North Forum .

כמו בכנסים הקודמים רוב החומר יחודי לפורום שלנו והכי חשוב מעשי .

אגב על הרצאה הקודמת : " ישום Golden Gate הגדול בעולם" Oracle כנראה יכתבו White Paper .

ניתן להירשם כאן :
http://www.iloug.org.il/Event_Page.php?EventID=175

David Yitzhak | Oracle ILOUG forum administrator

http://www.iloug.org.il/DBA_NorthForum.php

שימו לב :
בכנס זה נדבר לראשונה גם על MySQL . הפעם מפיו של DBA ותיק של אורקל : דו היט

David Itshak | 28/09/2013 בשעה 22:55
commenter

שם ההרצאה :
15:15-16:00 Managing Mysql DB – an Oracle veteran DBA perspective
דוב היט
נשמח לראותכם !!!

השאר תגובה:

שם (חובה):
אימייל (לא יפורסם) (חובה):
תגובה (חובה):

*



מאמרים קשורים

איך לבצע Sizing DB ב-Datacenter בארגונך בקלות (חלק א')

כחלק מהטמעות מוצרי IT תשתיתיים (כגון FWDB, מוצרי גיבוי, חוות Storage, מוצרי שו"ב ועוד…) בארגוני, אנו נדרשים המון פעמים לענות על שאלות לספקים כגון : מה גודל הכולל של ה –  Datacenter  ? מה חלוקת גודל ה [...]
מבוא

מבוא לבעיות ביצועים באורקל

The following two tabs change content below.BioLatest Posts עודד רז עודד רז, מנכ"ל חברת בריליקס ומייסד אתר זה. עודד הוא Oracle ACE Director ואחד מה-DBA-ים הבכירים ביותר בישראל, עם מעל 15 שנות ניסיון כ-DBA תשתיתי ואפליקטיבי. לעודד [...]

ה-SQL Performance Analyzer ב-Real Application Testing

בפוסט הקודם הזכרתי בקצרה את ה-SQL Performance Analyzer, בפוסט הזה אני אציג את ה-SPA, יתרונות וחסרונות של המוצר ואיך כדאי להשתמש [...]

מבוא ל- Real Application Testing

הפעם רציתי לסקור feature שלם שנקרא RAT (או בשמו המלא Real Application Testing). ה- feature הזה הוא database option של Oracle Enterprise Edition והוא לא חדש בכלל. הוא הוצג ב- 11gR1 וגם נמצא בשימוש לא מועט בעולם. משום מה, אצלנו בארץ לא יוצא [...]
Copyright 2019 ilDBA Portal. Brought to you by Brillix - Israel Leading DBA company. Sponsored by: DBSnaps - Database Video Tutorialss
Website Security Test
%d בלוגרים אהבו את זה: