Mysql实例MySQL MyISAM 优化设置点滴
《Mysql实例MySQL MyISAM 优化设置点滴》要点: MYSQL应用最近在配置mysql服务器需要用到的一些设置,经过测试发现比较不错的配置方案,亮点在最后啊 MYSQL应用先说一点问题: MYSQL应用key_buffer_size C 这对MyISAM表来说非常重要.如果只是使用MyISAM表,可以把它设置为可用内存的 30-40%.但是注意,分多少内存应该是根据需求决 定,而不是不管什么机器,都砍掉一半内存用作 key_buffer_size .合理的值取决于索引大小、数据量以及负载 ― 记住,MyISAM表会使用操作系统的缓存来缓存数据,因此需要留出部分内存给它们,很多情况下数据比索引大多了.可以通过SHOW GLOBAL STATUS 时的 Key_blocks_unused来查看,只要还有剩余,就说明 key_buffer_size 没用满.如果你很少使用MyISAM表,那么也保留低于 16-32MB 的 key_buffer_size 以适应给予磁盘的临时表索引所需. MYSQL应用sort_buffer_size C如果你只有一些简单的查询,那么就无需增加它的值了,尽管你有 64GB 的内存.搞不好也许会降低性能. back_log = 300 max_connections = 3000 max_connect_errors = 30 table_cache = 4096 max_allowed_packet = 32M #external-locking #skip-networking binlog_cache_size = 4M max_heap_table_size = 128M sort_buffer_size = 16M join_buffer_size = 16M thread_cache_size = 16 thread_concurrency = 8 query_cache_size = 128M ft_min_word_len = 8 #memlock thread_stack = 512K transaction_isolation = REPEATABLE-READ tmp_table_size = 128M #log_slave_updates #log #log_warnings log_slow_queries long_query_time = 6 log_long_format ................ MYSQL应用优化配置:经过编程之家PHP测试 MYSQL应用1.服务器的运行环境 [client] port??? = 3306 socket??? = /tmp/mysql.sock default-character-set = utf8 #设置客户端的字符编码 [mysqld] # generic configuration options port??? = 3306 socket??? = /tmp/mysql.sock #*** char set *** character-set-server = utf8 #设置服务器端的字符编码 ???????????? #*** network *** back_log = 512 #skip-networking #默认没有开启 max_connections = 3000 max_connect_errors = 30 table_open_cache = 4096 #external-locking #默认没有开启 max_allowed_packet = 32M max_heap_table_size = 128M ???????????? # *** global cache *** read_buffer_size = 8M read_rnd_buffer_size = 64M sort_buffer_size = 16M join_buffer_size = 16M ???????????? # *** thread *** thread_cache_size = 16 thread_concurrency = 8 thread_stack = 512K ???????????? # *** query cache *** query_cache_size = 128M query_cache_limit = 4M ???????????? # *** index *** ft_min_word_len = 8 ???????????? #memlock #默认没有开启 default-storage-engine = INNODB transaction_isolation = REPEATABLE-READ ???????????? # *** tmp table *** tmp_table_size = 64M ???????????? # *** bin log *** log-bin=mysql-bin binlog_cache_size = 4M binlog_format=mixed #log_slave_updates #默认没有开启 #log #默认没有开启,此处是查询日志,开启会影响服务器性能 log_warnings #开启警告日志 ???????????? # *** slow query log *** slow_query_log long_query_time = 10 # *** Replication related settings server-id = 1 #server-id = 2 #master-host = <hostname> #master-user = <username> #master-password = <password> #master-port = <port> #read_only #*** MyISAM Specific options key_buffer_size = 128M bulk_insert_buffer_size = 256M myisam_sort_buffer_size = 256M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 myisam_recover ???????????? # *** INNODB Specific options *** #skip-innodb #默认没有开启 innodb_additional_mem_pool_size = 64M innodb_buffer_pool_size = 6G #注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制,所以不要设置的太高. innodb_data_file_path = ibdata1:10M:autoextend #innodb_data_home_dir = <directory> innodb_write_io_threads = 8 innodb_read_io_threads = 8 #innodb_force_recovery=1 innodb_thread_concurrency = 16 innodb_flush_log_at_trx_commit = 2 #说明:innodb_flush_log_at_trx_commit = 2 如果是游戏服务器,建议此值设置为2;如果是对数据安全要求极高的应用,建议设置为1;设置为0性能最高,但如果发生故障,数据可能会有丢失的危险!默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的.特别是使用电池供电缓存(Battery backed up cache)时.设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存.日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新.设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据.而值2只会在整个操作系统挂了时才可能丢数据. #innodb_fast_shutdown innodb_log_buffer_size = 16M innodb_log_file_size = 512M innodb_log_files_in_group = 3 #innodb_log_group_home_dir innodb_max_dirty_pages_pct = 90 #innodb_flush_method=O_DSYNC innodb_lock_wait_timeout = 120 [mysqldump] quick max_allowed_packet = 32M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 2048M sort_buffer_size = 2048M read_buffer = 32M write_buffer = 32M [mysqlhotcopy] interactive-timeout [mysqld_safe] open-files-limit = 10240 MYSQL应用好了,上面就是MySQL MyISAM 优化设置的一些个人经验,感谢这些人的分享.希望大家以后多多支持编程之家. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |