上篇讲到了考试过程中,开发人员需要关注cpu和内存。sql日志也不容忽视,sql日志中显示了数据库操作系统的报错日志,给排错提供了很大的便利。
考试的数据库中写入了一些监听死锁和当前最耗资源语句的SQL语句。可以及时的监控死锁和了解当前考试进行到哪一步,是抽题,还是答题,还是交卷。
其中,听到了两个词:切割、数据库连接池。
后来查了一下,发现这两种方法都可以从不同的程度上对数据库的性能进行优化。
一、切割
横向切割:
就是把行分类,常用的两种是按照时间、索引划分。时间划分:比如5年的历史数据,根据二八定律,1年的数据可能就足够满足大部分的业务需求,所以单独的把1年的数据拿出。这样查询起来效率会更高。索引划分:比如部门编号,各个车间只存储自己车间的零件信息,把各个车间的信息分成单独的表更加方便查询。
纵向切割:
就是所谓的列切割。大数据的时候,列的个数直接影响到存取效果。
实例分割:
就是把共同的业务部分抽象,分别存储在不同的数据库中。例如账户数据库(存储用户信息)、日志数据库(存储监测数据)……
实例物理存储分割:
大数据的时候,放到不同的服务器上统计信息,可以通过分布式计算,大大提高运算速度。
二、数据库连接池
顾名思义,就是盛放数据库连接的池子,拥有分配、管理、释放数据库连接的能力。
具体就是初始化的时候,创建一定量的数据库连接放到连接池中,用户访问数据库的时候,无需建立新的连接,直接从连接池中拿就可以了,用完了再放回去。就像公共汽车似的,下车了,别人还可以接着来。30个座位,肯定能保证2个人在用,汽车司机和售票员,这个是最小连接数;来50个人,车只能放下30个,30就是最大连接数。剩下的几个人就只能排队等下一班车了。
好处:
数据库连接是一种关键的昂贵的有效的资源,数据库连接池增加了系统的伸缩性和健壮性。很少改动,就可以实现高吞吐量和低延迟和高性能。释放时间>最大空闲时间,容易造成数据库连接遗漏,连接池的接力赛很好的避免了这一问题。
三、总结
学习就是把理论应用于实践,希望以后做系统能把自己学到的理论知识很好的应用到实践当中,加油!
版权声明:本文为博主原创文章,未经博主允许不得转载。