| 您的当前位置:首页 --> MYSQL教程 --> MySQL MyISAM 优化设置点滴 |
| MYSQL教程 MySQL MyISAM 优化设置点滴 |
| 浏览次数:1045 关键词 ( ) |
| 查看使用该CPU的产品 查看CPU天梯 |
| CPU型号:MySQL MyISAM 优化设置点滴 |
| 主频:Ghz |
| 睿频:Ghz |
| 核心数:个 |
| 不支持超核心 |
| 制作工艺: |
| 插槽类型: |
| 功耗:0W |
| L3缓存:0MB |
| 支持最大内存: 0GB |
| CPU详细参数 |
|
最近在配置mysql服务器需要用到的一些设置,经过测试发现比较不错的配置方案,亮点在最后啊 先说一点问题: key_buffer_size – 这对MyISAM表来说非常重要。如果只是使用MyISAM表,可以把它设置为可用内存的 30-40%。但是注意,分多少内存应该是根据需求决 定,而不是不管什么机器,都砍掉一半内存用作 key_buffer_size .合理的值取决于索引大小、数据量以及负载 — 记住,MyISAM表会使用操作系统的缓存来缓存数据,因此需要留出部分内存给它们,很多情况下数据比索引大多了。可以通过SHOW GLOBAL STATUS 时的 Key_blocks_unused来查看,只要还有剩余,就说明 key_buffer_size 没用满。如果你很少使用MyISAM表,那么也保留低于 16-32MB 的 key_buffer_size 以适应给予磁盘的临时表索引所需。 sort_buffer_size –如果你只有一些简单的查询,那么就无需增加它的值了,尽管你有 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 ................ 优化配置:经过80vps测试 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 MyISAM 优化设置的一些个人经验,感谢这些人的分享。希望大家以后多多支持80vps。 |
| 下一个产品 SQL计算timestamp的差值的方法 上一个产品 Linux系统下Mysql使用简单教程(一) |