论文部分内容阅读
在21世纪这样的信息时代,数据库技术已经渗透到各种应用领域当中,互联网的快速发展推动着数据库技术应用的激烈变革。在信息数据量飙升的环境下,用户不再仅仅需求某种单一软件,而是越来越关注并寻求稳定、高效的数据层解决方案。本文所依托的课题项目背景——某企业B/S结构员工网络行为监控系统引用了当前最流行的LAMP(Linux+Apache+Mysql+PHP)架构进行开发。被大家公认为目前Linux系统下运行速度最快的MySQL数据库保存了各种网络行为日志信息。然而面对要频繁读写大规模日志数据这样的需求,如何进行合理的数据库设计与性能优化,使得网络行为监控系统数据库稳定、高效的运行是本课题的主要工作目的。为保证大规模数据的查询效率,本文设计了一种基于静动隔离数据拆分的架构。首先将大规模日志数据拆分为活跃数据与静态数据,即实时与历史日志,通过定时任务调度实现活跃数据到静态数据的复制,其次结合MySQL 5.1版本引入的新特性——partition表分区技术,按照不同时间粒度对日志进行表分区。对于数据量较小且频繁访问的基础数据表,采用磁盘表与内存表并存方式保存数据,以提高表连接效率。为监控策略制定模块设计了灵活的监控策略表,以模板形式应用策略到单个被控对象或组被控对象中,并实现了监控策略应用的组优先,方便管理员操作。从而设计了一套合理、高效的数据库Schema。在Query优化方面,本文通过分析频度较高的Query语句explain执行计划,设计了适当的索引。对于不适合建立索引的数据列,本文提出了一种数据分类模型,按照列属性对数据表进行一维或二维关系的数据分类,并以视图方式保存,通过匹配对应的数据子集,实现查询语句重组,取代原来繁琐的Query语句。经测试表明,Query优化后避免了全表扫描造成的响应时间延迟,查询效率比优化前大大提高,证明了该优化方案的可行性。