通达OA系统myisam转innodb引擎
OA系统切换到linux环境后,性能提升了2-3倍左右,随着公司的发展壮大,办公人员也会越来越多,当人数达到一定数量级别时如1500在线人数已无法支撑公司业务,就需要对系统进行性能提升优化。
当前OA系统采用myisam数据库引擎,该数据库引擎的特点是查询量是主要业务时响应速度很快,myisam是表锁不支持外键。innodb引擎是行锁,并发处理能力更强,针对大量用户同时新建工作流的业务场景,innodb数据库引擎更加合适。
还有一点需要注意的是myisam可以直接通过拷贝整个数据库目录文件的方式迁移或者备份,innodb引擎备份更麻烦一些需要通过导出sql语句的方式备份。
现阶段的mysql报告 96.22%都是查询业务,用myisam性能更佳
具体实施步骤
1.备份数据库(将整个TD_OA数据库备份)
cd /opt/lampp/var/mysql
mkdir TD_OABAK
cp TD_OA/*.* TD_OABAK
2.修改my.cnf文件
innodb_data_file_path=ibdata1:256M:autoextend
innodb_buffer_pool_size = 10G (内存的1/3大小)
innodb_log_buffer_size = 8M
key_buffer_size = 2G
innodb_log_file_size = 256M
innodb_log_files_in_group = 8
2.生成修改引擎为innodb的sql语句
运行修改表的脚本拼凑ALTER TABLE wp_posts ENGINE=INNODB;
<?php
header('content-type:text/html;charset=utf-8');
//将数据库由myisam转化为innodb引擎
//连接数据库
$conn=mysql_connect('localhost:3336','root','myoa888');
if(!$conn) {
print_r(mysql_error());
}
//选库
$sql='use td_oa';
mysql_query($sql) or die('select database error');
//设置字符集
$sql='set names utf8';
mysql_query($sql);
$sql = 'show tables';
$res = mysql_query($sql);
while($row = mysql_fetch_row($res)){
$sql = "alter table `".$row[0]."` ENGINE=INNODB;";
echo $sql,'<br />';
}
?>
3.重启数据库服务