关于高考查分高并发查询的设计方案
最近需要做一个高考查分功能,数据大概是50w。由于每天查询的人比较多所以性能上需要优化。听同事说之前做过高考查分功能,高峰期服务器经常会挂掉。。。
我的思路是:为了避免查询数据库,把50w数据按准考证号排序然后一次加入到内存装入到两个数组里,
一个数值用来存放考证号arr1,另外一个数组arr2存放学生考试相关信息(身份证|准考证|姓名|语|数|外|综合)
查询的时候根据准考证号通过二分查找从arr1查询出下标值index,
然后arr2[index]得到学生成绩,核对姓名与身份证如果正确则返回分数然后在页面显示。
不知道这样设计是否合理,欢迎各位大牛给出您宝贵的意见。
高并发 高考 性能优化 内存 并发
[解决办法]
你把数据加载到数组有没有考虑过内存的占用情况,如果是实时查询的数据只能是优化下SQL语句,比如建索引之类的方式。
[解决办法]
你内存里运行的不只是那两个数组,行不行自己试,“内存50w的数据应该还行吧”,行不行不是靠你想当然决定的。
都装内存里了还装什么数组,直接造个B-Tree。
[解决办法]
你可以弄个分布式缓存,如:memcache,弄5个,第一个存1-10万,第二给存10到20万....然后程序控制。这样效率会高多了。
[解决办法]
按道理高考查询的这些数据都不会再修改了,只是提供查询而已,大可以使用第三方缓存框架这么一些热点数据完全无压力...没必要全部装在内存里...
[解决办法]
这种访问压力也能挂,看来用的是笔记本当服务器啊。
[解决办法]