狮子的雄心,骆驼的耐力,孩子的执著!
分类: Mysql/postgreSQL
2013-07-15 14:57:29
“设置thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。
thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那么thread_concurrency的应该为4; 2个双核的cpu, thread_concurrency的值应为8.”
具体修改方法是:
[mysqld]
thread_concurrency=8
mysql
thread_cache_size默认配置thread_cache_size=8,根据调查发现以上服务器线程缓存
thread_cache_size没有进行设置,或者设置过小,这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么
客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的
线程,增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。
建议根据物理内存设置规则如下:
1G => 8,2G => 16,3G => 32,大于3G => 64
InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1,这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收 缩,单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。
在MySQL的配置文件[mysqld]部分,增加innodb_file_per_table参数。
可以修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间。
独立表空间:
优点:
1. 每个表都有自已独立的表空间。
2. 每个表的数据和索引都会存在自已的表空间中。
3. 可以实现单表在不同的数据库中移动。
4. 空间可以回收(除drop table操作处,表空不能自已回收)
a) Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间。
b) 对于使innodb-plugin的Innodb使用turncate table也会使空间收缩。
c) 对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。
缺点:
单表增加过大,如超过100个G。
结论:
共享表空间在Insert操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整一 下:innodb_open_files 。
InnoDB Hot Backup(冷备)的表空间cp不会面对很多无用的copy了。而且利用innodb hot backup及表空间的管理命令可以实现单现移动。
1.innodb_file_per_table设置.开启方法:
在my.cnf中[mysqld]下设置
innodb_file_per_table=1
2.查看是否开启:
mysql> show variables like ‘%per_table%’;
3.关闭独享表空间
innodb_file_per_table=0关闭独立的表空间
mysql> show variables like ‘%per_table%’;
更多Mysql Innodb 引擎优化
背景:
在缺省情况下,启动mysql会绑定所有本机IP。为了加强系统的,mysql只允许绑定在内部IP。
实现方法
将mysql绑定内部IP方法有两种,方法实现如下:
方法一
在mysql的localstatedir(安装mysql的时候使用configure --localstatedir=DIR指定,缺省目录为$MYSQL_HOME/var,这里的$MYSQL_HOME是指mysql的目录)增加一个名为my.cnf文件。my.cnf
文件内容如下:
[mysqld]
bind-address= IP(此IP为需要绑定的IP地址)
方法二
使用safe_mysqld启动mysql时候,多加一参数”--bind-address=IP”指定mysqld绑定的IP地址。
例如:
启动mysqld使用的命令行为:
/usr/local/mysql/bin/safe_mysqld --bind-address=192.168.10.26 -uroot &
建议采用方法一实现将mysql绑定在内部IP。
一般情况下,mysql 绑定到一个内部IP就可以了,如果需要绑定多个内部IP,就采用缺省方式启动mysql,同时将外部IP对应的网卡down下来。