项目是一个网络客户机安全监控系统的开发,客户机8000台,监控客户机所有行为,如:访问网站地址,打开和关闭的程序名,插拨USB设备的信息,建立和删除文件或文件夹等等信息。这些信息都需要通过服务器端运行的程序监控,把8000台客户端所有操作行为记录下来。实时用c++插入到mysql数据库。同时用php程序的web界面访问这个数据库,还要读数据库生成csv。就几个大表,设计的巨简单。几乎日志信息都保存到一个表了。这样可以想象客户端实时的信息会有很多的。服务器cpu直线上升,php访问数据库也需要2-3分钟。
请问大家有没有好的解决方案可以解决这个问题。当然表结构可以拆开的,还可以加索引,这个我也知道的。如果不考虑这个方面,其他方面有没有好的方法。
1.推荐使用InnoDB。
2、关闭外键约束。
3、采用多值插入“INSERT INTO yourtable VALUES (1,2), (5,5), ...;”
4、加大buffer pool 是不错办法。
相关优化配置:
6、 推荐InnoDB的配置(1G内存情况,主要运行mysql服务器):
innodb_buffer_pool_size = 600M
innodb_additional_mem_pool_size = 64M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 256M
#innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
innodb_file_per_table
其中innodb_flush_log_at_trx_commit和innodb_file_per_table对I/O性能影响最大。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。