MySQL MyISAM/InnoDB高并发优化经验.

最近做的一个应用,功能要求非常简单,就是 key/value 形式的存储,简单的 INSERT/SELECT,没有任何复杂查询,唯一的问题是量非常大,如果目前投入使用,初期的单表 insert 频率约 20Hz(次/秒,我喜欢这个单位,让我想起国内交流电是 50Hz),但我估计以后会有 500Hz+ 的峰值。目前的工作成果,额定功率 200Hz(CPU 占用 10 – 20,load avg = 2),最大功率 500Hz(这时 load avg > 20,很明显,只能暂时挺挺,应该在出现这种负载前提前拆表了)

INSERT DELAYED INTO

从 数据的插入开始说起。如果可以容忍结果几秒以后再生效的,可以用 INSERT DELAYED INTO,因为在我的这个结构中不需要对同一个 key 频繁的 INSERT/SELECT,因为 SELECT 我是用 Memcached 挡住了,除非 Memcached 挂了,或者数据实在老到过期了,才会去 SELECT。而且要注意,如果 PHP 不需要关心 MySQL 操作的返回结果,应该使用 unbuffered query,简单的说,在你提交 query 后,不用等待 MySQL 有返回信息就继续执行之后的 PHP 指令,具体用法是用 mysql_unbuffered_query 代替 mysql_query,如果用的 MySQLi 类,应该使用 mysqli->query($sQuery, MYSQLI_USE_RESULT);

如果 SHOW PROCESSLIST,可以看到用户名为 DELAYED 的进程,进程数量等于 INSERT DELAYED 的表的数量,因为表级锁的存在,每个表一条以上的 DELAYED 进程是没有意义的

Continue reading...

CentOS编译安装MySQL-5.5.20 cmake参数说明。

  1. cmake . \   
  2. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   
  3. -DMYSQL_DATADIR=/usr/local/mysql/data \   
  4. -DMYSQL_UNIX_ADDR=/var/tmp/mysql/mysqld.sock \   
  5. -DDEFAULT_CHARSET=utf8 \   
  6. -DDEFAULT_COLLATION=utf8_general_ci \   
  7. -DWITH_EXTRA_CHARSETS=all \   
  8. -DWITH_MYISAM_STORAGE_ENGINE=1 \   
  9. -DWITH_INNOBASE_STORAGE_ENGINE=1 \   
  10. -DWITH_MEMORY_STORAGE_ENGINE=1 \   
  11. -DWITH_READLINE=1 \   
  12. -DENABLED_LOCAL_INFILE=1 \   
  13. -DMYSQL_USER=mysql  

-DCMAKE_INSTALL_PREFIX= 数据库程序安装路径;
-DMYSQL_DATADIR= 数据库文件存放路径
-DMYSQL_UNIX_ADDR= 默认位置是/tmp/mysql.sock
-DDEFAULT_CHARSET= 默认数据库编码
-DDEFAULT_COLLATION= 默认数据库整理编码
-DWITH_EXTRA_CHARSETS= 扩展支持编码(all | utf8,gbk,gb2312 | none)
-DWITH_MYISAM_STORAGE_ENGINE= MYISAM引擎支持(1|0)
-DWITH_INNOBASE_STORAGE_ENGINE= innoDB引擎支持(1|0)
-DWITH_MEMORY_STORAGE_ENGINE= MEMORY引擎支持(1|0)

Continue reading...

linux apache 端口占用问题的解决方法。

centos重启apache时出现:
Starting httpd: httpd: Could not reliably determine the server's fully qualified
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
执行以下命令后启动正常。

  1. #sudo fuser -k -n tcp 80   
  2. #sudo /etc/init.d/httpd -k start   

Continue reading...



about me

  • 陶之11's Blog Name:陶之11 OICQ:14779023 Site:Pao11.com

分类

快捷入口