![]() |
שאלה על מסד נתונים
רציתי לדעת עם כדי לפתוח cache במסד נתונים שאתה מריץ משחק און ליין
או בכלל אסור לפתוח? כי במידה וסרביס נופל או שרת עושה רייסט המידע שיש הוא נאבד או לא? ומה עדיף להריץ בשביל משחק און ליין Myisam או Innodb ? |
innodb - חד משמעית, מבחינתי היום זה רק זה ואין כל שימוש ל MYISAM.
לגבי הקאש, כל עוד המידע שאתה עושה עליו קאש, הוא לא מידע רלוונטי שמשפיע על מהלך המשחק, אז תעשה לו קאש. אל תשכח לפתוח אינדקסים היכן שחשוב ולהשתמש ב relation איפה שצריך לחסוך לך קודים ולעשות אופטימיזציה מלאה. |
תודה.
|
לגבי innodb !!! מומלץ להשתמש בו במידה והטבלה שלך מבצעת הרבה שאילתות Update או Insert מכיוון שבזמן עדכון טבלה ננעלת רק השורה עליה מתבצע העדכון ולא כל הטבלה.
לגבי שליפת נתונים MYISAM יותר מהיר!!! ועוד משהו!!! במידה ואתה יוצר אינדקסים על טבלה עם מנוע innodb כך בחשבון שהיא תיהיה יותר גדולה מבחינת גודל האחסון. במקרה אתמול הפכתי טבלה של 450M למנוע innodb ובגלל האינדקסים הטבלה שקלה 850MB ולגבי מהירות לא היה שינוי לטובה אז החזרתי אותה למנוע MYISAM! לגבי טבלה ל-cache לדעתי תשתמש עם מנוע מסוג MEMORY... מדובר במנוע שיוצר טבלאות שנמצאות רק בזכרון ה-RAM של ה-MySQL. ברגע שה-MySQL עובר restart מסיבה מסוימת אז כל המידע שיש בטבלה נמחק (אך המבנה נשמר). כיוון שהטבלה נמצאת ב-RAM, הביצועים שלה מצויינים. מומלץ מאד להשתמש במנוע זה עבור מידע זמני שלא חשוב שהוא יישאר במסד הנתונים במשך זמן רב. בנוסף אם אתה מעוניין בביצועים טובים אז אתה צריך לקנפג נכון my.cnf לפי הגדרות השרת שלך. |
בטעות הודעה כפולה!
|
ציטוט:
בקשר ל MEMORY, לא ממליץ להשתמש במשחקי דפדפן. זה יאכל לך את הזכרון של השרת וגם נפילה מזערית של השרת תאבד לך נתונים, והמשחק יהיה כשלון. |
ציטוט:
לגבי cache במידה והוא משתמש עם תוספים כאלו ובטח לא לגבי טבלאות של המשחק עצמו כי מן הסתם זה נמחק בכל פעם שמפעילים את הסרוויס של MYSQLD. אבל יעבוד הרבה הרבה יותר מהר זה בטוח! ובכל מקרה לא נראה לי שהוא מתכנן לעשות ריסט לשרת כל שנייה וחצי כי זה לא הייעוד של שרת. כשהכל מקונפג ועובד טוב אז אין צורך בריסט גם לשנה+ |
ציטוט:
|
תודה על העזרה, העברתי את המסד מ MyISAM ל InnoDB ולא הרגשתי שום שינוי זה נשאר אותו דבר עכשיו ששאלתי עם מומלץ להשתמש ב cahce במכיוון שעשיתי רייסט לסרביס mariadb ונעלמו לי דברים במשחק שזה די הרס אותו (נעלמו דברים קריטים), הייתי רוצה לקבל ממכם חוות דעת על הקונפיג שעשיתי
השרת שאני משתמש הוא xeon 1245 v3 , 32GB , raid5 ssd 120GB אני משתמש ב nginx, mariadb והקונפיג הולך אצלי ככה [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock skip-federated skip-archive skip-blackhole wait_timeout = 30 max_heap_table_size = 256M default-storage-engine = InnoDB slow_query_log=0 long_query_time = 2 slow_query_log_file=/var/lib/mysql/slowq.log log-error=/var/log/mysqld.log # innodb settings innodb_doublewrite = 1 innodb_file_per_table = 1 innodb_data_file_path= ibdata1:10M:autoextend innodb_log_files_in_group = 2 innodb_flush_log_at_trx_commit = 2 innodb_thread_concurrency = 0 innodb_lock_wait_timeout=50 innodb_support_xa=1 # DISKS innodb_io_capacity = 500 innodb_read_io_threads = 8 innodb_write_io_threads = 8 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mariadb-5.5] innodb_log_block_size = 512 log_slow_filter =admin,filesort,filesort_on_disk,full_join,full_sc an,query_cach$ [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d |
ציטוט:
תריץ MySQLTuner (יעזור לך מאוד בכדי לדעת מה אתה צריך להגדיר בקינפוג של MYSQL לפי גודל בסיסי הנתונים ולפי איך שזה רץ) * אם אתה לא מכיר את הערכים של הגדרות mysql לא מומלץ לשנות לפני שתקרא את המשמעות של כל ערך שאתה משנה. |
הערכים שהכנסתי זה אחרי שעות שחקרתי מה אני צריך בדיוק לשרת שלי אז לדעתי יש התאמה פה כמו כן לא השתמשתי ב cache כי אני פוחד שהמשחק יקרוס לי שנית.
וניסיתי להתאים בדיוק מה שאני צריך, הבעיה שזה לא עזר ועדיין זו אותה מהירות ולפעמים המסד נתקע אצלי לכמה שניות עד שמשתחרר שאני לוחץ על כפתורים במשחק התקיעות של מסד נתונים קוראים לי שיש בערך 10 משתמשים בו זמנית ומעלה. אז אני כבר מתחיל להתייאש, יש מישהו שאמר לי אפילו ששרת כמו שיש לי אני לא צריך לקנפג ושזה אמור לעבוד מהר לכן אני כבר שוקל שהקוד של המשחק עושה את הבעיה אבל למרות שהמשחק נתקע לי ואני עושה רייסט ל mariadb פתאום כמה דקות ראשונות הוא מתחיל להיות מהיר. והלוגים ריקים לא מראה לי שגיאות שם. בגלל זה אני לא מבין מה הולך פה |
אוקיי אז לפי הטענה שלך למה אתה כל כך בטוח הבעיה מלכתחילה ב-MYSQL?
כמה גודל בסיס הנתונים שלך? וכמה זיכרון תפוס בשרת עצמו בזמן שהכל קורס? בדקת את זה? |
כמובן שזה נבדק יש יותר מ 90% מהזכרון פנוי.
ולמה אני חושב שהבעיה במסד זה כי שהכל עובד לאט ואני עושה רייסט ל mariadb אז הכל משתחרר ונהיה מהיר פתאום. וגודל המסד בערך 50-60 מגה |
הינה משהו שכנראה יעזור לך למצוא פיתרון
http://www.askapache.com/mysql/perfo...ing-mysql.html https://mariadb.com/kb/en/mariadb/op...on-and-tuning/ ודרך אגב... יצרת אינדקסים לטבלאות? |
יכול להיות אינסוף דברים חייב לבדוק רק מי שמכיר את הקוד יוכל להגיד לך מה קורה
1) יכול להיות לולאה כלשהי שעושה אינסוף קריאות למסד נתונים ותוקעת אותו 2) יכול להיות הגדרות apache שמוגדר שם עד 10 משתמשים(זה הברירת מחדל נראה לי) 3)יכול להיות שוב איזהשהי פעולה בזבזנית בקוד. 4)יכול להיות שאין אינדקסים בשרת 5)הגדרות לא נכונות 6)יצא לי להתקל בפירצת sql injection שפשוט כל פעם הזריקו קוד שמעמיס על המסד וכו' וכו' וכו'. ברגע שהשרת איטי אתה צריך לברר האם כל הזיכרון תפוס? האם המעבד מלא? דיסק קשיח מתאמץ יותר מדי? כמה קריאות יש למסד נתונים באותו רגע? האם יש שם שאילתות איטיות? במידה ולא האם הכל מוגדר כמו שצריך? אולי בעיית חומרה בשרת? |
כל הזמנים הם GMT +2. הזמן כעת הוא 21:15. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ