Subscribe to How-To Geek

Recommended: Click Here to Run a Free Scan for Common PC Errors   [Sponsored Link]

Using a MySQL Performance Tuning Analyzer Script

When you are working on increasing the speed of your website, a very important piece is making sure you get every last drop of performance out of your database server. Unfortunately, for most of us that aren't normally database administrators this can be a difficult proposition.

There's a number of performance tuning scripts that will analyze your server settings and current status and give you information on recommended changes that you should make. You shouldn't necessarily follow all of the suggestions, but it's worthwhile to take a look at anyway.

The script I've been using gives you recommendations for the following:

  • Slow Query Log
  • Max Connections
  • Worker Threads
  • Key Buffer
  • Query Cache
  • Sort Buffer
  • Joins
  • Temp Tables
  • Table (Open & Definition) Cache
  • Table Locking
  • Table Scans (read_buffer)
  • Innodb Status
  • Once you download the script, you'll need to make it executable with the following command:

    chmod u+x tuning-primer.sh

    If you run this script as a regular user, it will prompt you for your password, so you'll have to make sure to set access accordingly. If you run it as root it'll pick up the mysql password from Plesk if you have that installed.

    I've cut out a lot of the output, which had a lot more recommendations, but was just too long to fit on the page.

    ./tuning-primer.sh

            — MYSQL PERFORMANCE TUNING PRIMER –
                 - By: Matthew Montgomery -

    MySQL Version 4.1.20 i686

    Uptime = 5 days 10 hrs 46 min 5 sec
    Avg. qps = 4
    Total Questions = 2020809
    Threads Connected = 1

    Server has been running for over 48hrs.
    It should be safe to follow these recommendations

    ———– snipped ————–

    QUERY CACHE
    Query cache is enabled
    Current query_cache_size = 8 M
    Current query_cache_used = 7 M
    Current query_cach_limit = 1 M
    Current Query cache fill ratio = 89.38 %
    However, 254246 queries have been removed from the query cache due to lack of memory
    Perhaps you should raise query_cache_size
    MySQL won't cache query results that are larger than query_cache_limit in size

    ———– snipped ————–

    Looks like I need to increase my query cache… I set it to only 8MB but it's cleaning out the cache far too often.

    ———– snipped ————–

    TEMP TABLES
    Current max_heap_table_size = 16 M
    Current tmp_table_size = 32 M
    Of 35170 temp tables, 74% were created on disk
    Effective in-memory tmp_table_size is limited to max_heap_table_size.
    Perhaps you should increase your tmp_table_size and/or max_heap_table_size
    to reduce the number of disk-based temporary tables
    Note! BLOB and TEXT columns are not allow in memory tables.
    If you are using these columns raising these values might not impact your
    ratio of on disk temp tables.

    ———– snipped ————–

    This type of information is just invaluable when you are trying to tune the performance of your website.

    Download MySQL Performance Tuning Primer Script

    The Geek is the founder of How-To Geek and a geek enthusiast. When he's not coming up with great how-to articles, he's probably writing at his personal blog. This article was written on 10/4/07 and tagged with: Linux

    Comments (3)

    1. bushido

      ./tuning-primer.sh: line 1164: bc: command not found
      ./tuning-primer.sh: line 1197: [: -gt: unary operator expected
      ./tuning-primer.sh: line 350: [: max_memoryHR: integer expression expected
      ./tuning-primer.sh: line 356: [: max_memoryHR: integer expression expected
      ———– [ chopped by editor for length] —————
      TABLE SCANS
      ./tuning-primer.sh: line 331: bc: command not found
      Current read_buffer_size = K
      Current table scan ratio = 7 : 1
      read_buffer_size seems to be fine

      plese help.

    2. The Geek

      bushido:

      The problem you are having is that you are missing some of the utilities required by the script. You'll have to install the missing utilities, such as bc.

    3. Matthew Montgomery

      Thanks for using my script :-)

      If you do see any bugs or recommendations that seem ill advised please let me know. My e-mail address is found inside the script header.

      Thanks
      Matt


    Leave a Comment




    Leave your friendly comment here. If you have a computer help question, leave it on the forums instead.

    Note: Your comment may not show up immediately on the site.

    Copyright © 2006-2008 HowToGeek.com. All Rights Reserved.