600X MySQL Performance Improvement with Kickfire
July 17th, 2008Posted by Karl Van den Bergh
As promised, in this post I will update on the performance improvements another Kickfire beta customer is seeing relative to its query response times.
The customer in question is a successful mid-sized company in the network management space. As part of their network management offering, they provide network monitoring and analysis capabilities. They are currently using MySQL as their backend database. The trouble they are having is that they can’t scale beyond about 50GB of data without impacting their monitoring and analysis performance. What this translates to is that their customers can’t use their solution to monitor more than 30 days worth of network traffic. While this is OK for some, others are clamoring for the ability to track and analyze up to three years of traffic and willing to pay significantly more to do so. Today, if they try to accomodate these customers, the queries end up taking hours to run which is unacceptably high.
To test the Kickfire appliance, the customer ran their 12 hardest queries on about half a terabyte of data. The customer schema has125 tables and about half a billion rows in the fact table. As I received a request for more detail in my last post, I’ve pasted below one of the queries (obfuscated for privacy) that the customer is tyring to run as an example of what they are trying to do.
SELECT(CEILING(TIME_END/900)*900)+ -21600 AS TIMEBIN, IFNULL(SUM(RTT_SUM)/SUM(RTT_COUNT), 0.0) AS RTT, IFNULL(SUM(RETRANS_SUM)/SUM(RETRANS_COUNT), 0.0) AS RETRANS, IFNULL(SUM(APP_SUM)/SUM(APP_COUNT), 0.0) AS DTT, IFNULL(SUM(SERVER_SUM)/SUM(SERVER_COUNT), 0.0) AS SRT, IFNULL(SUM(RTT_COUNT),0) AS RTTCOUNT, IFNULL(SUM(RETRANS_COUNT),0) AS RETRANSCOUNT, IFNULL(SUM(APP_COUNT),0) AS DTTCOUNT, IFNULL(SUM(SERVER_COUNT),0) AS SRTCOUNT, IFNULL(SUM(RTT_SUM+RETRANS_SUM)/SUM(RTT_COUNT), 0.0) AS EFFECTIVERTT,
FROM RUNS1
WHERE (TIME_END > 1197472400 - (86400*30) AND TIME_END <= 1197472400) AND MAINTENANCE = 0
GROUP BY TIMEBIN
Prior to using Kickfire, the customer had taken these 12 queries and set up a lab environment to try and achieve higher performance. By re-architecting the application, leveraging things like partitioning, they were able to achieve a 60X improvement. The problem with this approach is that this re-architecture would have introduced significant development and testing efforts and forced their customers to make a major and costly upgrade to their installations.
The customer then did the query performance comparison with Kickfire by simply moving the data and schema as is to the Kickfire appliance. The appliance in question was the Kickfire 2300 which comes with 64GB memory.
Without any re-architecture, the customer was able to achieve an average 600X improvement out of the box. What this means is the customer can now support its larger customers, and generate more revenue for the company, without any system re-architecture or associated cost.
