来源:自学PHP网 时间:2015-04-16 10:50 作者: 阅读:次
[导读] 概述:在linux vps主机上配置mysql数据库,由于默认使用yum安装的数据库启动了InnoDB引擎,同时其 etc my cnf配置都我们的vps主机不是很适合,本文详细讲解如何配置适合自己vps主机的mysql配...
概述:在linux vps主机上配置mysql数据库,由于默认使用yum安装的数据库启动了InnoDB引擎,同时其/etc/my.cnf配置都我们的vps主机不是很适合,本文详细讲解如何配置适合自己vps主机的mysql配置文件 目的:优化vps主机上的mysql数据库,使之更合适vps主机这样的环境 query_cache_size = 268435456 query_cache_type=1 query_cache_limit=1048576 查看mysql-server静态参数值命令 mysql>show status; 或者mysqladmin -uroot status 1、查看和修改默认的存储引擎,关闭不需要的存储引擎 mysql>SHOW ENGINES \G 或者第二种方法 mysql>SHOW VARIABLES LIKE 'have%'; 查看默认引擎 mysql> show variables like 'table_type'; +---------------+--------+ | Variable_name | Value | +---------------+--------+ | table_type | MyISAM | +---------------+--------+ 1 row in set (0.00 sec) 或者 mysql> show variables like 'storage_engine'; +----------------+--------+ | Variable_name | Value | +----------------+--------+ | storage_engine | MyISAM | +----------------+--------+ 1 row in set (0.00 sec) mysql默认的存储引擎是MyISAM,修改默认的存储引擎可以修改/etc/my.cnf参数文件,在[mysqld]字段里面增加default-storage-engine=innodb,这里假设设置默认为innodb,根据自己的需要进行设置,关闭不需要的存储引擎,可以修改/etc/my.cnf参数文件,在[mysqld]字段里面增加–skip-innodb。 mysql> show variables like 'key_buffer_size'; +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | key_buffer_size | 402653184 | +-----------------+-----------+ 1 row in set (0.00 sec) mysql> 从上面可以看到,key_buffer_size为:384M,可以修改/etc/my.cnf参数文件,在[mysqld]字段里面增加key_buffer_size = 384M,当然也可以使用mysql>set grobal key_buffer_size=512M修改。 此参数是用来<strong>设置索引块</strong>(Index Blocks)缓存的大小,它被所有的线程共享,只适合MyISAM存储引擎。 3、调节table_cache设置 mysql> show variables like 'table_cache'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | table_cache | 4096 | +---------------+-------+ 1 row in set (0.00 sec) 从上面可以看到,table_cache为:4096,可以修改/etc/my.cnf参数文件,在[mysqld]字段里面增加table_cachee = 4096 4、调节query_cache设置 Query Cache 在提高数据库性能方面具有非常重要的作用,其设定也非常简单,仅需要在配置文件写入两行: query_cache_type 和 query_cache _size,而且 MySQL 的 query cache 非常快!而且一旦命中,就直接发送给客户端,节约大量的 CPU 时间。 当然,非 SELECT 语句对缓冲是有影响的,它们可能使缓冲中的数据过期。一个 UPDATE 语句引起的部分表修改,将导致对该表所有的缓冲数据失效,这是 MySQL 为了平衡性能而没有采取的措施。因为,如果每次 UPDATE 需要检查修改的数据,然后撤出部分缓冲将导致代码的复杂度增加。 query_cache_type :0 代表不使用缓冲, 1 代表使用缓冲,2 代表根据需要使用。 设置 1 代表缓冲永远有效,如果不需要缓冲,就需要使用如下语句: SELECT SQL_NO_CACHE * FROM my_table WHERE … 如果设置为 2 ,需要开启缓冲,可以用如下语句: SELECT SQL_CACHE * FROM my_table WHERE … 用 SHOW STATUS 可以查看缓冲的情况: mysql> show status like 'Qca%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_queries_in_cache | 8 | | Qcache_inserts | 545875 | | Qcache_hits | 83951 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 2343256 | | Qcache_free_memory | 33508248 | | Qcache_free_blocks | 1 | | Qcache_total_blocks | 18 | +-------------------------+----------+ 8 rows in set (0.00 sec) 如果需要计算命中率,需要知道服务器执行了多少 SELECT 语句: mysql> show status like 'Com_sel%'; +---------------+---------+ | Variable_name | Value | +---------------+---------+ | Com_select | 2889628 | +---------------+---------+ 1 row in set (0.01 sec) 在本例中, MySQL 命中了 2,889,628 条查询中的 83,951 条,而且 INSERT 语句只有 545,875 条。因此,它们两者的和和280万的总查询相比有很大差距,因此,我们知道本例使用的缓冲类型是 2 。 而在类型是 1 的例子中, Qcache_hits 的数值会远远大于 Com_select 。 Qcache_not_cached是可以记录DML语句的数量的 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com