Document contains periodic audit of query performance and mysql server optimizations. ====Server opts==== Upgrade MySQL server to 5.6. Reported performance boosts. Setup indexes, MasterMaster, Sharding. Research Percona 5.5 XtraDB Cluster & MariaDB ($$) ==== Queries ==== Configuration : sync_binlog=1 slow-query-log = 1 slow-query-log-file = /var/log/mysql/mysql-slow.log long_query_time = 1 log-queries-not-using-indexes # Overall: 69.24k total, 142 unique, 0.84 QPS, 0.00x concurrency _________ # Time range: 2014-06-29 00:15:27 to 23:05:31 # Attribute total min max avg 95% stddev median # ============ ======= ======= ======= ======= ======= ======= ======= # Exec time 129s 117us 10s 2ms 8ms 39ms 541us # Lock time 10s 0 116ms 138us 204us 974us 119us # Rows sent 739.49k 0 1.73k 10.94 1.96 121.88 0 # Rows examine 41.32M 0 1.05M 625.84 1.78k 7.06k 22.53 # Query size 14.59M 16 2.86k 220.95 363.48 94.38 234.30 # Profile # Rank Query ID Response time Calls R/Call V/M Item # ==== ================== ============= ===== ======= ===== ============== # 1 0x82E7D47835BE4056 55.2638 42.7% 6899 0.0080 0.00 SELECT users # 2 0x5725EFD7A21CCC98 16.5702 12.8% 32305 0.0005 0.00 SELECT delayed_jobs # 3 0x9D6306F0A5C31C72 16.1724 12.5% 14628 0.0011 0.00 SELECT permalinks # 4 0xF9A57DD5A41825CA 10.2317 7.9% 1 10.2317 0.00 SELECT # 5 0x57EC86EA18BB59A3 10.0432 7.8% 455 0.0221 0.00 SELECT users # 6 0xBA85D722D89C814E 4.6461 3.6% 537 0.0087 0.04 SELECT users # 7 0xA2F83841F2519905 4.0722 3.1% 3 1.3574 0.00 SELECT activities # 8 0x8E20783F0D97D2A4 2.2644 1.7% 472 0.0048 0.03 SELECT posts featured_items users # 9 0x95BA57AFA503BFC5 1.5929 1.2% 3540 0.0004 0.00 SELECT disk_usages # 10 0x48F7FFE893831DF2 1.2886 1.0% 1310 0.0010 0.00 SELECT live_events # 11 0x23CA16FF481B4519 1.1693 0.9% 299 0.0039 0.12 SELECT progress_breakups # MISC 0xMISC 6.0977 4.7% 8788 0.0007 0.0 <131 ITEMS> # Query 1: 0.09 QPS, 0.00x concurrency, ID 0x82E7D47835BE4056 at byte 20331321 # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: 2014-06-29 01:24:37 to 23:05:31 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 9 6899 # Exec time 42 55s 7ms 14ms 8ms 8ms 604us 8ms # Lock time 4 435ms 40us 4ms 63us 89us 64us 54us # Rows sent 1 10.96k 1 3 1.63 2.90 0.61 1.96 # Rows examine 28 11.67M 1.73k 1.73k 1.73k 1.69k 0 1.69k # Query size 5 869.11k 129 129 129 129 0 129 # String: # Databases cbprod # Hosts (6881/99%), 10-166-152... (18/0%) # Users cbpuser # Query_time distribution # 1us # 10us # 100us # 1ms ################################################################ # 10ms # # 100ms # 1s # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'users'\G # SHOW CREATE TABLE `cbprod`.`users`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT * FROM `users` WHERE (`users`.company_id = 3) AND ((sb_last_seen_at > '2014-06-30 00:02:11') AND (`users`.company_id = 3))\G # Query 2: 0.40 QPS, 0.00x concurrency, ID 0x5725EFD7A21CCC98 at byte 931 # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: 2014-06-29 00:34:20 to 23:05:29 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 46 32305 # Exec time 12 17s 166us 33ms 512us 657us 239us 490us # Lock time 60 6s 53us 32ms 181us 224us 179us 176us # Rows sent 0 24 0 1 0.00 0 0.03 0 # Rows examine 0 50 0 2 0.00 0 0.05 0 # Query size 50 7.41M 240 241 240.64 234.30 0 234.30 # String: # Databases cbprod # Hosts (16176/50%), 10-166-152... (16129/49%) # Users cbpuser # Query_time distribution # 1us # 10us # 100us ################################################################ # 1ms # # 10ms # # 100ms # 1s # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'delayed_jobs'\G # SHOW CREATE TABLE `cbprod`.`delayed_jobs`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT * FROM `delayed_jobs` WHERE ((run_at <= '2014-06-29 07:34:20' AND (locked_at IS NULL OR locked_at < '2014-06-29 03:34:20') OR (locked_by = 'host:prodapp01 pid:16233')) AND failed_at IS NULL) ORDER BY priority DESC, run_at ASC LIMIT 5\G # Query 3: 0.18 QPS, 0.00x concurrency, ID 0x9D6306F0A5C31C72 at byte 9480 # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: 2014-06-29 00:35:31 to 23:03:14 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 21 14628 # Exec time 12 16s 155us 94ms 1ms 2ms 837us 1ms # Lock time 11 1s 42us 87ms 76us 131us 715us 57us # Rows sent 1 14.29k 1 1 1 1 0 1 # Rows examine 42 17.72M 9 2.01k 1.24k 1.96k 520.44 1.26k # Query size 18 2.67M 189 200 191.22 192.76 3.23 183.58 # String: # Databases cbprod # Hosts (7560/51%), 10-166-152... (7068/48%) # Users cbpuser # Query_time distribution # 1us # 10us # 100us ############### # 1ms ################################################################ # 10ms # # 100ms # 1s # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'permalinks'\G # SHOW CREATE TABLE `cbprod`.`permalinks`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT * FROM `permalinks` WHERE (`permalinks`.link_id = 175 AND `permalinks`.link_type = 'Post') AND (permalinks.deleted_at IS NULL OR permalinks.deleted_at > '2014-06-29 07:35:32') LIMIT 1\G # Query 4: 0 QPS, 0x concurrency, ID 0xF9A57DD5A41825CA at byte 0 ________ # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: all events occurred at 2014-06-29 00:15:27 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 0 1 # Exec time 7 10s 10s 10s 10s 10s 0 10s # Lock time 0 0 0 0 0 0 0 0 # Rows sent 0 1 1 1 1 1 0 1 # Rows examine 0 0 0 0 0 0 0 0 # Query size 0 16 16 16 16 16 0 16 # String: # Hosts localhost # Users root # Query_time distribution # 1us # 10us # 100us # 1ms # 10ms # 100ms # 1s # 10s+ ################################################################ # EXPLAIN /*!50100 PARTITIONS*/ select sleep(10)\G # Query 5: 0.01 QPS, 0.00x concurrency, ID 0x57EC86EA18BB59A3 at byte 2993789 # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: 2014-06-29 00:45:41 to 23:02:42 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 0 455 # Exec time 7 10s 19ms 39ms 22ms 26ms 2ms 21ms # Lock time 0 24ms 36us 140us 52us 98us 19us 44us # Rows sent 90 668.25k 1.47k 1.47k 1.47k 1.46k 0 1.46k # Rows examine 1 787.77k 1.73k 1.73k 1.73k 1.69k 0 1.69k # Query size 0 23.11k 52 52 52 52 0 52 # String: # Databases cbprod # Hosts (256/56%), 10-166-152... (199/43%) # Users cbpuser # Query_time distribution # 1us # 10us # 100us # 1ms # 10ms ################################################################ # 100ms # 1s # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'users'\G # SHOW CREATE TABLE `cbprod`.`users`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT * FROM `users` WHERE (`users`.company_id = 3)\G # Query 6: 0.01 QPS, 0.00x concurrency, ID 0xBA85D722D89C814E at byte 221218 # This item is included in the report because it matches --limit. # Scores: V/M = 0.04 # Time range: 2014-06-29 00:39:30 to 23:04:26 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 0 537 # Exec time 3 5s 7ms 444ms 9ms 8ms 18ms 8ms # Lock time 0 38ms 41us 192us 70us 131us 32us 52us # Rows sent 0 1.20k 1 4 2.29 2.90 0.63 1.96 # Rows examine 2 929.72k 1.73k 1.73k 1.73k 1.69k 0 1.69k # Query size 0 36.18k 69 69 69 69 0 69 # String: # Databases cbprod # Hosts 10-166-152... (269/50%), (268/49%) # Users cbpuser # Query_time distribution # 1us # 10us # 100us # 1ms ################################################################ # 10ms # # 100ms # # 1s # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'users'\G # SHOW CREATE TABLE `cbprod`.`users`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT * FROM `users` WHERE (sb_last_seen_at > '2014-06-29 07:37:20')\G # Query 7: 0.00 QPS, 0.01x concurrency, ID 0xA2F83841F2519905 at byte 250580 # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: 2014-06-29 00:40:22 to 00:52:14 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 0 3 # Exec time 3 4s 1s 1s 1s 1s 31ms 1s # Lock time 0 497us 109us 234us 165us 224us 48us 152us # Rows sent 0 15 5 5 5 5 0 5 # Rows examine 7 3.14M 1.05M 1.05M 1.05M 1.03M 0 1.03M # Query size 0 1.27k 432 432 432 432 0 432 # String: # Databases cbprod # Hosts 10-166-152-19.cloud.opsource.net # Users cbpuser # Query_time distribution # 1us # 10us # 100us # 1ms # 10ms # 100ms # 1s ################################################################ # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'activities'\G # SHOW CREATE TABLE `cbprod`.`activities`\G # SHOW TABLE STATUS FROM `cbprod` LIKE 'activities'\G # SHOW CREATE TABLE `cbprod`.`activities`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT * FROM `activities` WHERE (`activities`.user_id = 1275) AND ((((activities.id = (SELECT a.id from activities as a where a.item_id = activities.item_id AND a.item_type = activities.item_type ORDER BY a.created_at DESC LIMIT 1)) AND (`activities`.`action` = 'viewed')) AND (`activities`.`item_type` IN ('Course','Certification','LiveEvent','InPersonEvent'))) AND (`activities`.user_id = 1275)) ORDER BY created_at desc LIMIT 5\G # Query 8: 0.01 QPS, 0.00x concurrency, ID 0x8E20783F0D97D2A4 at byte 528307 # This item is included in the report because it matches --limit. # Scores: V/M = 0.03 # Time range: 2014-06-29 00:45:40 to 23:02:41 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 0 472 # Exec time 1 2s 2ms 259ms 5ms 6ms 12ms 4ms # Lock time 0 48ms 77us 703us 101us 159us 41us 89us # Rows sent 1 9.22k 20 20 20 20 0 20 # Rows examine 0 111.74k 241 243 242.42 234.30 0 234.30 # Query size 1 247.06k 536 536 536 536 0 536 # String: # Databases cbprod # Hosts (263/55%), 10-166-152... (209/44%) # Users cbpuser # Query_time distribution # 1us # 10us # 100us # 1ms ################################################################ # 10ms # # 100ms # # 1s # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'posts'\G # SHOW CREATE TABLE `cbprod`.`posts`\G # SHOW TABLE STATUS FROM `cbprod` LIKE 'featured_items'\G # SHOW CREATE TABLE `cbprod`.`featured_items`\G # SHOW TABLE STATUS FROM `cbprod` LIKE 'users'\G # SHOW CREATE TABLE `cbprod`.`users`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT `posts`.* FROM `posts` INNER JOIN `featured_items` ON `featured_items`.item_id = `posts`.id AND `featured_items`.item_type = 'Post' INNER JOIN `users` ON `posts`.user_id = `users`.id WHERE ((`users`.company_id = 3)) AND (((published_as = 'live' AND display_in_catalog_start_date <= '2014-06-29 07:45:40' AND (display_in_catalog_end_date >= '2014-06-29 07:45:40' OR display_in_catalog_end_date IS NULL)) AND ((`users`.company_id = 3))) AND (posts.deleted_at IS NULL OR posts.deleted_at > '2014-06-29 07:45:40')) ORDER BY position\G # Query 9: 131.11 QPS, 0.06x concurrency, ID 0x95BA57AFA503BFC5 at byte 2038193 # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: 2014-06-29 01:59:59 to 02:00:26 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 5 3540 # Exec time 1 2s 117us 86ms 449us 657us 1ms 403us # Lock time 2 212ms 31us 64ms 59us 54us 1ms 38us # Rows sent 0 3.46k 1 1 1 1 0 1 # Rows examine 7 2.99M 1 1.73k 885.50 1.61k 499.22 874.75 # Query size 1 250.22k 70 73 72.38 72.65 1.50 69.19 # String: # Databases cbprod # Hosts (1770/50%), 10-166-152... (1770/50%) # Users cbpuser # Query_time distribution # 1us # 10us # 100us ################################################################ # 1ms # # 10ms # # 100ms # 1s # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'disk_usages'\G # SHOW CREATE TABLE `cbprod`.`disk_usages`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT * FROM `disk_usages` WHERE (`disk_usages`.user_id = 1) LIMIT 1\G # Query 10: 0.02 QPS, 0.00x concurrency, ID 0x48F7FFE893831DF2 at byte 15521312 # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: 2014-06-29 00:36:20 to 23:04:26 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 1 1310 # Exec time 0 1s 694us 6ms 983us 1ms 229us 972us # Lock time 1 168ms 50us 249us 128us 176us 40us 138us # Rows sent 0 1.57k 0 2 1.23 1.96 0.94 1.96 # Rows examine 0 345.83k 269 272 270.33 258.32 1.12 258.32 # Query size 1 275.05k 215 215 215 215 0 215 # String: # Databases cbprod # Hosts (656/50%), 10-166-152... (654/49%) # Users cbpuser # Query_time distribution # 1us # 10us # 100us #################################### # 1ms ################################################################ # 10ms # 100ms # 1s # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'live_events'\G # SHOW CREATE TABLE `cbprod`.`live_events`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT * FROM `live_events` WHERE ((scheduled_end_time >= '2014-06-28 19:36:20' && scheduled_end_time <= '2014-06-29 19:36:20') AND (live_events.deleted_at IS NULL OR live_events.deleted_at > '2014-06-29 19:36:20'))\G # Query 11: 0.00 QPS, 0.00x concurrency, ID 0x23CA16FF481B4519 at byte 640266 # This item is included in the report because it matches --limit. # Scores: V/M = 0.12 # Time range: 2014-06-29 00:47:23 to 23:02:16 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 0 299 # Exec time 0 1s 2ms 381ms 4ms 3ms 21ms 3ms # Lock time 1 129ms 44us 112ms 432us 93us 6ms 49us # Rows sent 0 292 0 1 0.98 0.99 0.15 0.99 # Rows examine 4 1.92M 6.56k 6.58k 6.57k 6.31k 0 6.31k # Query size 0 40.29k 138 138 138 138 0 138 # String: # Databases cbprod # Hosts (288/96%), 10-166-152... (11/3%) # Users cbpuser # Query_time distribution # 1us # 10us # 100us # 1ms ################################################################ # 10ms # 100ms # # 1s # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'progress_breakups'\G # SHOW CREATE TABLE `cbprod`.`progress_breakups`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT * FROM `progress_breakups` WHERE (`progress_breakups`.progress_score_id = 4132) ORDER BY progress_breakups.created_at desc LIMIT 1\G 137s-MacBook-Pro:Expertus p137$ ./pt-query-digest mysql-slow mysql-slow-mast.log mysql-slow.log 137s-MacBook-Pro:Expertus p137$ ./pt-query-digest mysql-slow-mast.log # 320ms user time, 60ms system time, 23.21M rss, 2.36G vsz # Current date: Mon Jun 30 14:27:31 2014 # Hostname: 137s-MacBook-Pro.local # Files: mysql-slow-mast.log # Overall: 433 total, 31 unique, 0.01 QPS, 0.00x concurrency _____________ # Time range: 2014-06-29 00:15:44 to 23:05:40 # Attribute total min max avg 95% stddev median # ============ ======= ======= ======= ======= ======= ======= ======= # Exec time 23s 64us 10s 54ms 6ms 602ms 194us # Lock time 9ms 0 790us 20us 69us 59us 0 # Rows sent 7.31M 0 3.61M 17.28k 1.69k 243.33k 2.90 # Rows examine 7.39M 0 3.61M 17.47k 1.96k 243.32k 46.83 # Query size 39.59k 6 1.00k 93.63 271.23 88.84 54.21 # Profile # Rank Query ID Response time Calls R/Call V/M Item # ==== ================== ============= ===== ======= ===== ============ # 1 0x67A347A2812914DF 11.9692 51.2% 300 0.0399 4.97 SELECT carts # 2 0xF9A57DD5A41825CA 10.0010 42.8% 1 10.0010 0.00 SELECT # 3 0x813031B8BBC3B329 1.2120 5.2% 1 1.2120 0.00 COMMIT # MISC 0xMISC 0.1911 0.8% 131 0.0015 0.0 <28 ITEMS> # Query 1: 0.01 QPS, 0.00x concurrency, ID 0x67A347A2812914DF at byte 60326 # This item is included in the report because it matches --limit. # Scores: V/M = 4.97 # Time range: 2014-06-29 01:05:01 to 13:05:07 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 69 300 # Exec time 51 12s 64us 6s 40ms 6ms 445ms 125us # Lock time 0 0 0 0 0 0 0 0 # Rows sent 99 7.30M 0 3.61M 24.93k 2.27k 292.02k 38.53 # Rows examine 98 7.30M 0 3.61M 24.93k 2.27k 292.02k 38.53 # Query size 39 15.77k 44 73 53.81 62.76 6.00 51.63 # String: # Databases cbprod # Hosts localhost # Users root # Query_time distribution # 1us # 10us ################################################### # 100us ################################################################ # 1ms ############### # 10ms ### # 100ms # # 1s # # 10s+ # Tables # SHOW TABLE STATUS FROM `cbprod` LIKE 'carts'\G # SHOW CREATE TABLE `cbprod`.`carts`\G SELECT /*!40001 SQL_NO_CACHE */ * FROM `carts`\G # Converted for EXPLAIN # EXPLAIN /*!50100 PARTITIONS*/ SELECT /*!40001 SQL_NO_CACHE */ * FROM `carts`\G # Query 2: 0 QPS, 0x concurrency, ID 0xF9A57DD5A41825CA at byte 0 ________ # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: all events occurred at 2014-06-29 00:15:44 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 0 1 # Exec time 42 10s 10s 10s 10s 10s 0 10s # Lock time 0 0 0 0 0 0 0 0 # Rows sent 0 1 1 1 1 1 0 1 # Rows examine 0 0 0 0 0 0 0 0 # Query size 0 16 16 16 16 16 0 16 # String: # Hosts localhost # Users root # Query_time distribution # 1us # 10us # 100us # 1ms # 10ms # 100ms # 1s # 10s+ ################################################################ # EXPLAIN /*!50100 PARTITIONS*/ select sleep(10)\G # Query 3: 0 QPS, 0x concurrency, ID 0x813031B8BBC3B329 at byte 39316 ____ # This item is included in the report because it matches --limit. # Scores: V/M = 0.00 # Time range: all events occurred at 2014-06-29 01:22:56 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 0 1 # Exec time 5 1s 1s 1s 1s 1s 0 1s # Lock time 0 0 0 0 0 0 0 0 # Rows sent 0 0 0 0 0 0 0 0 # Rows examine 0 0 0 0 0 0 0 0 # Query size 0 6 6 6 6 6 0 6 # String: # Databases cbprod # Hosts # Users cbpuser # Query_time distribution # 1us # 10us # 100us # 1ms # 10ms # 100ms # 1s ################################################################ # 10s+ COMMIT\G