Hi All, I downloaded and ran this script in my server. I'm having many issues regardins the MySQL Performance. My experience with MySQL parameters is very low. I have a ISPConfig server. My result of the analysis is: Code: >> MySQLTuner 0.9.9 - Major Hayden <[email protected]> >> Bug reports, feature requests, and downloads at http://mysqltuner.com/ >> Run with '--help' for additional options and output filtering Please enter your MySQL administrative login: root Please enter your MySQL administrative password: -------- General Statistics -------------------------------------------------- [--] Skipped version check for MySQLTuner script [OK] Currently running supported MySQL version 5.0.51a-3ubuntu5.1-log [OK] Operating on 32-bit architecture with less than 2GB RAM -------- Storage Engine Statistics ------------------------------------------- [--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster [--] Data in MyISAM tables: 2M (Tables: 354) [--] Data in InnoDB tables: 9M (Tables: 344) [!!] Total fragmented tables: 41 -------- Performance Metrics ------------------------------------------------- [--] Up for: 3m 14s (9 q [0.046 qps], 6 conn, TX: 7K, RX: 515) [--] Reads / Writes: 100% / 0% [--] Total buffers: 42.0M global + 2.6M per thread (100 max threads) [!!] Maximum possible memory usage: 304.5M (163% of installed RAM) [OK] Slow queries: 0% (0/9) [OK] Highest usage of available connections: 1% (1/100) Use of uninitialized value in numeric lt (<) at ./mysqltuner.pl line 673, <> line 2 (#1) (W uninitialized) An undefined value was used as if it were already defined. It was interpreted as a "" or a 0, but maybe it was a mistake. To suppress this warning assign a defined value to your variables. To help you figure out what was undefined, perl tells you what operation you used the undefined value in. Note, however, that perl optimizes your program and the operation displayed in the warning may not necessarily appear literally in your program. For example, "that $foo" is usually optimized into "that " . $foo, and the warning will refer to the concatenation (.) operator, even though there is no . in your program. [!!] Key buffer size / total MyISAM indexes: 16.0M/20.2M [!!] Query cache is disabled [OK] Temporary tables created on disk: 0% (0 on disk / 2 total) [OK] Thread cache hit rate: 83% (1 created / 6 connections) [OK] Table cache hit rate: 50% (6 open / 12 opened) [OK] Open file limit used: 1% (14/1K) [OK] Table locks acquired immediately: 100% (12 immediate / 12 locks) [!!] Connections aborted: 16% [!!] InnoDB data size / buffer pool: 9.2M/8.0M -------- Recommendations ----------------------------------------------------- General recommendations: Run OPTIMIZE TABLE to defragment tables for better performance MySQL started within last 24 hours - recommendations may be inaccurate Reduce your overall MySQL memory footprint for system stability Enable the slow query log to troubleshoot bad queries Your applications are not closing MySQL connections properly Variables to adjust: *** MySQL's maximum memory usage exceeds your installed memory *** *** Add more RAM before increasing any MySQL buffer variables *** key_buffer_size (> 20.2M) query_cache_size (>= 8M) innodb_buffer_pool_size (>= 9M) I will increase my server memory. Someone has tips or instructions to improve my MySQL performance? Thanks in advance, Vinicius
falko, I changed some memory configurations I now i have this result: Code: [email protected]:~# ./mysqltuner.pl >> MySQLTuner 0.9.9 - Major Hayden <[email protected]> >> Bug reports, feature requests, and downloads at http://mysqltuner.com/ >> Run with '--help' for additional options and output filtering Please enter your MySQL administrative login: root Please enter your MySQL administrative password: -------- General Statistics -------------------------------------------------- [--] Skipped version check for MySQLTuner script [OK] Currently running supported MySQL version 5.0.51a-3ubuntu5.1-log [OK] Operating on 32-bit architecture with less than 2GB RAM -------- Storage Engine Statistics ------------------------------------------- [--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster [--] Data in MyISAM tables: 2M (Tables: 354) [--] Data in InnoDB tables: 9M (Tables: 344) [!!] Total fragmented tables: 40 -------- Performance Metrics ------------------------------------------------- [--] Up for: 13h 2m 45s (16K q [0.347 qps], 1K conn, TX: 36M, RX: 2M) [--] Reads / Writes: 71% / 29% [--] Total buffers: 58.0M global + 2.6M per thread (100 max threads) [!!] Maximum possible memory usage: 320.5M (137% of installed RAM) [OK] Slow queries: 0% (0/16K) [OK] Highest usage of available connections: 5% (5/100) [OK] Key buffer size / total MyISAM indexes: 16.0M/20.2M [OK] Key buffer hit rate: 99.8% (36K cached / 81 reads) [OK] Query cache efficiency: 45.7% (4K cached / 9K selects) [OK] Query cache prunes per day: 0 [OK] Sorts requiring temporary tables: 0% (0 temp sorts / 642 sorts) [!!] Temporary tables created on disk: 26% (510 on disk / 1K total) [OK] Thread cache hit rate: 99% (5 created / 1K connections) [!!] Table cache hit rate: 8% (64 open / 752 opened) [OK] Open file limit used: 12% (127/1K) [OK] Table locks acquired immediately: 100% (7K immediate / 7K locks) [!!] InnoDB data size / buffer pool: 9.2M/8.0M -------- Recommendations ----------------------------------------------------- General recommendations: Run OPTIMIZE TABLE to defragment tables for better performance MySQL started within last 24 hours - recommendations may be inaccurate Reduce your overall MySQL memory footprint for system stability Enable the slow query log to troubleshoot bad queries When making adjustments, make tmp_table_size/max_heap_table_size equal Reduce your SELECT DISTINCT queries without LIMIT clauses Increase table_cache gradually to avoid file descriptor limits Variables to adjust: *** MySQL's maximum memory usage exceeds your installed memory *** *** Add more RAM before increasing any MySQL buffer variables *** tmp_table_size (> 32M) max_heap_table_size (> 16M) table_cache (> 64) innodb_buffer_pool_size (>= 9M) Yes, I have phpmyAdmin. And my my.cnf is: Code: # # The MySQL database server configuration file. # # You can copy this to one of: # - "/etc/mysql/my.cnf" to set global options, # - "~/.my.cnf" to set user-specific options. # # One can use all long options that the program supports. # Run program with --help to get a list of available options and with # --print-defaults to see which it would actually understand and use. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html # This will be passed to all mysql clients # It has been reported that passwords should be enclosed with ticks/quotes # escpecially if they contain "#" chars... # Remember to edit /etc/mysql/debian.cnf when changing the socket location. [client] port = 3306 socket = /var/run/mysqld/mysqld.sock # Here is entries for some specific programs # The following values assume you have at least 32M ram # This was formally known as [safe_mysqld]. Both versions are currently parsed. [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english skip-external-locking # # localhost which is more compatible and is not less secure. # bind-address = 127.0.0.1 # # * Fine Tuning # key_buffer = 16M max_allowed_packet = 16M thread_stack = 128K thread_cache_size = 8 #max_connections = 100 #table_cache = 64 #thread_concurrency = 10 # # * Query Cache Configuration # query_cache_limit = 1M query_cache_size = 16M # # * Logging and Replication # # Both location gets rotated by the cronjob. # Be aware that this log type is a performance killer. #log = /var/log/mysql/mysql.log # # Error logging goes to syslog. This is a Debian improvement :) # # Here you can see queries with especially long duration #log_slow_queries = /var/log/mysql/mysql-slow.log #long_query_time = 2 #log-queries-not-using-indexes # # The following can be used as easy to replay backup logs or for replication. #server-id = 1 log_bin = /var/log/mysql/mysql-bin.log # WARNING: Using expire_logs_days without bin_log crashes the server! See README.Debian! expire_logs_days = 10 max_binlog_size = 100M #binlog_do_db = include_database_name #binlog_ignore_db = include_database_name # # * BerkeleyDB # # Using BerkeleyDB is now discouraged as its support will cease in 5.1.12. skip-bdb # # * InnoDB # # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. # Read the manual for more InnoDB related options. There are many! # You might want to disable InnoDB to shrink the mysqld process by circa 100MB. #skip-innodb # # * Security Features # # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". # # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem [mysqldump] quick quote-names max_allowed_packet = 16M [mysql] #no-auto-rehash # faster start of mysql but no tab completition [isamchk] key_buffer = 16M # # * NDB Cluster # # See /usr/share/doc/mysql-server-*/README.Debian for more information. # # The following configuration is read by the NDB Data Nodes (ndbd processes) # not from the NDB Management Nodes (ndb_mgmd processes). # # [MYSQL_CLUSTER] # ndb-connectstring=127.0.0.1 # # * IMPORTANT: Additional settings that can override those from this file! # !includedir /etc/mysql/conf.d/
You can add something like Code: tmp_table_size = 64M max_heap_table_size = 32M table_cache = 128 innodb_buffer_pool_size=10M to the [mysqld] section. How much RAM do you have?