本发明涉及数据库技术领域,尤其涉及一种面向多租户的缓冲区管理方法及服务器。
背景技术:
在数据库(database,db)领域,租户表示一个数据库的“用户”,他“租用”了数据库的部分资源。多租户(multi-tenancy/tenant)是指多个租户共享一个数据库实例。随着云计算技术的兴起和蓬勃发展,越来越多的云服务提供商将多租户应用部署在云上,多个租户共用云上相同的系统或程序组件,共享云上的资源(例如硬件资源、计算资源、内存资源等),并且可确保租户间数据的隔离性。例如,多个企业通过某服务网站开启企业邮箱,每个企业在登录网站时使用同样的界面填写企业id、密码等认证信息,接受网站同样的服务流程,但网站为每个企业保留的信息是隔离的。一个企业无法看到其它企业的信息。这里,每个企业就是一个租户,一个租户中包含管理员和普通员工的多个个人账户。
多个租户在对云上存储的数据进行访问时,传统的缓冲区资源管理方案存在着明显的不足:每个租户在云上创建时,云服务系统按需为其分配固定大小的缓冲区,由于系统在运行过程中每个租户的缓冲区使用大小具有不确定性,往往因为初始设置的缓冲区容量过大而造成缓冲区的资源浪费,也会因为初始设置的缓冲区容量过小而导致不能满足租户的需求。
技术实现要素:
本发明实施例提供了一种面向多租户的缓冲区管理方法及服务器。
第一方面,提供了一种面向多租户的缓冲区管理方法,应用于但不限于服务器,例如数据库服务器,可应用于大规模处理的数据库处理系统,所述数据库处理系统包括但不限于:分布式磁盘数据库系统、集群数据库系统和mpp(massivelyparallelprocessing,大规模并行处理系统)数据库系统。且所述服务器可以为普通服务器,也可以为云服务器(又称云计算服务器或云主机)。所 述方法包括:
根据预设历史时间段内目标租户的历史缓冲区命中率,按照预设规则预测所述目标租户的未来缓冲区命中率,所述目标租户为所述多租户中的一个;
比较所述未来缓冲区命中率与所述目标租户预设的期望缓冲区命中率的大小,所述期望缓冲区命中率为所述目标租户对缓冲区命中率的平均需求值,所述目标租户在服务器上申请注册时,可以对所述期望缓冲区命中率进行设置;
若所述未来缓冲区命中率大于所述期望缓冲区命中率,则根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,并按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页;其中所述第一预设缓冲区命中率小于所述未来缓冲区命中率;
若所述未来缓冲区命中率小于所述期望缓冲区命中率,则根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,并按照所述第二容量为所述目标缓冲区添加数据页;其中所述第二预设缓冲区命中率大于所述未来缓冲区命中率。
通过实施第一方面所描述的方法,可以根据目标租户未来的缓冲区命中率需求以及所述目标租户预设的缓冲区命中率需求的大小关系,动态调整所述目标租户对应的目标缓冲区的容量。
在一些实现方式中,所述根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,包括:
将所述期望缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述期望缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
通过执行上述步骤,可以在满足所述目标租户的期望缓冲区命中率需求的情况下,利用所述目标租户的未来缓冲区命中率与所述期望缓冲区命中率的差值进行计算,得到所述目标租户富余的数据页的容量,从而将所述目标租户富余的数据页进行释放,避免资源浪费。
在一些实现方式中,所述根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,包括:
将所述期望缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述期望缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲 区容量,按照第二预设算法计算出第二容量。
通过执行上述步骤,为保障所述目标租户的期望缓冲区命中率需求,利用所述目标租户的期望缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得到所述目标租户目前所需的数据页的容量,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
在一些实现方式中,所述根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,包括:
判断所述未来缓冲区命中率是否大于所述目标租户预设的最大缓冲区命中率,所述最大缓冲区命中率大于所述期望缓冲区命中率,所述最大缓冲区命中率为所述目标租户对缓冲区命中率的最大需求值,所述目标租户在所述服务器上申请注册时,可以对所述最大缓冲区容量进行设置;
若是,则将所述最大缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述最大预设缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
通过执行上述步骤,可以在满足所述目标租户的最大缓冲区命中率需求的前提下,利用所述未来缓冲区命中率与所述最大缓冲区命中率的差值进行计算,得到所述目标缓冲区富余的数据页的容量,从而将所述目标租户富余的数据页进行释放,避免资源浪费。
在一些实现方式中,所述按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,包括:
按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,并将释放出的所述第一容量的数据页添加到空闲缓冲区中,所述空闲缓冲区中的数据页用于供所述多租户中需要添加数据页的租户使用。
通过执行上述步骤,可以将从所述目标租户的缓冲区中释放出的数据页添加到空闲缓冲区中,既可以保障所述目标租户的访问性能需求,又能够将所述目标租户富余的缓冲区资源释放出来,以供给所述多租户中其他需要增加缓冲区容量的租户(包括所述目标租户、所述多租户中的其他租户以及所述服务器新增加的租户)或者服务器中的其他业务使用,提高多租户的整体性能和缓冲区的资源利用率。
在一些实现方式中,所述根据所述未来缓冲区命中率与所述目标租户预设 的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,包括:
判断所述未来缓冲区命中率是否大于所述目标租户预设的最大缓冲区命中率,所述最大缓冲区命中率大于所述期望缓冲区命中率;
若否,则将所述期望缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述期望缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
通过执行上述步骤,可以在满足所述目标租户的期望缓冲区命中率需求的情况下,利用所述目标租户的未来缓冲区命中率与所述期望缓冲区命中率的差值进行计算,得到所述目标租户富余的数据页的容量,从而将所述目标租户富余的数据页进行释放,避免资源浪费。
在一些实现方式中,所述按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,包括:
按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,所述释放出的数据页用于供所述多租户中其他需要添加数据页的租户使用,所述第一容量小于或等于所述其他需要添加数据页的租户待添加的数据页容量。
通过执行上述步骤,可以在所述多租户中其他租户有数据页需求时,将从所述目标租户的缓冲区中释放出的数据页分配给其他租户使用,既可以保障所述目标租户的访问性能需求,又能够将所述目标租户富余的缓冲区资源释放出来,以供给所述多租户中其他需要添加数据页的租户使用,提高多租户的整体性能和缓冲区的资源利用率。
在一些实现方式中,所述根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,包括:
判断所述未来缓冲区命中率是否小于所述目标租户预设的最小缓冲区命中率,所述最小缓冲区命中率小于所述期望缓冲区命中率,所述最小缓冲区命中率为所述目标租户对缓冲区命中率的最小需求值,所述目标租户在所述服务器上申请注册时,可以对所述最小缓冲区命中率进行设置;
若是,则将所述最小缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述最小缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量。
通过执行上述步骤,为保障所述目标租户的最小缓冲区命中率需求,利用 所述目标租户的最小缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得出所述目标租户至少需要添加第二容量的数据页,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
在一些实现方式中,所述根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,包括:
判断所述未来缓冲区命中率是否小于所述目标租户预设的最小缓冲区命中率,所述最小缓冲区命中率小于所述期望缓冲区命中率;
若否,则将所述期望缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述期望缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量。
通过执行上述步骤,为保障所述目标租户的期望缓冲区命中率需求,利用所述目标租户的期望缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得到所述目标租户目前所需的数据页的容量,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
在一些实现方式中,所述比较所述未来缓冲区命中率与所述目标租户预设的期望缓冲区命中率的大小,包括:
判断所述未来缓冲区命中率减去所述期望缓冲区命中率的差值是否大于第一预设阈值,或者,判断所述期望缓冲区命中率减去所述未来缓冲区命中率的差值是否大于第二预设阈值;
若所述未来缓冲区命中率减去所述期望缓冲区命中率的差值大于所述第一预设阈值,则所述未来缓冲区命中率大于所述期望缓冲区命中率;若所述期望缓冲区命中率减去所述未来缓冲区命中率的差值大于所述第二预设阈值,则所述未来缓冲区命中率小于所述期望缓冲区命中率。通过设置浮动值(即所述第一预设阈值和所述第二预设阈值),可以更加灵活地判断是否有必要调整所述目标缓冲区的容量。
在一些实现方式中,所述根据预设历史时间段内目标租户的历史缓冲区命中率,按照预设规则预测所述目标租户的未来缓冲区命中率这一步骤由以下至少一个事件触发:预设周期到达;预设时间点到达;缓冲区命中率低于预设缓冲区命中率阈值的租户的个数大于或等于预设个数阈值。在满足触发事件时,服务器可以及时了解所述目标租户的缓冲区命中率情况,进而及时地对所述目 标缓冲区的容量进行调整。
第二方面,提供了一种服务器,包括:
预测单元,用于根据预设历史时间段内目标租户的历史缓冲区命中率,按照预设规则预测所述目标租户的未来缓冲区命中率,所述目标租户为所述多租户中的一个;
比较单元,用于比较所述预测单元预测得到的所述未来缓冲区命中率与所述目标租户预设的期望缓冲区命中率的大小,所述期望缓冲区命中率为所述目标租户对缓冲区命中率的平均需求值,所述目标租户在服务器上申请注册时,可以对所述期望缓冲区命中率进行设置;
第一管理单元,用于若所述比较单元比较出所述未来缓冲区命中率大于所述期望缓冲区命中率,则根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,并按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页;其中所述第一预设缓冲区命中率小于所述未来缓冲区命中率;
第二管理单元,用于若所述比较单元比较出所述未来缓冲区命中率小于所述期望缓冲区命中率,则根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,并按照所述第二容量为所述目标缓冲区添加数据页;其中所述第二预设缓冲区命中率大于所述未来缓冲区命中率。
通过上述服务器,可以根据目标租户未来的缓冲区命中率需求以及所述目标租户预设的缓冲区命中率需求的大小关系,动态调整所述目标租户对应的目标缓冲区的容量。
在一些实现方式中,所述第一管理单元具体用于:
将所述期望缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述期望缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
通过上述服务器,可以在满足所述目标租户的期望缓冲区命中率需求的情况下,利用所述目标租户的未来缓冲区命中率与所述期望缓冲区命中率的差值进行计算,得到所述目标租户富余的数据页的容量,从而将所述目标租户富余的数据页进行释放,避免资源浪费。
在一些实现方式中,所述第二管理单元具体用于:
将所述期望缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述期望缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量。
通过上述服务器,为保障所述目标租户的期望缓冲区命中率需求,利用所述目标租户的期望缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得到所述目标租户目前所需的数据页的容量,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
在一些实现方式中,所述第一管理单元包括:
第一判断单元,用于若所述比较单元比较出所述未来缓冲区命中率大于所述期望缓冲区命中率,则判断所述未来缓冲区命中率是否大于所述目标租户预设的最大缓冲区命中率,所述最大缓冲区命中率大于所述期望缓冲区命中率,所述最大缓冲区命中率为所述目标租户对缓冲区命中率的最大需求值,所述目标租户在所述服务器上申请注册时,可以对所述最大缓冲区容量进行设置;
第一计算单元,用于若所述第一判断单元判断出所述未来缓冲区命中率大于所述目标租户预设的最大缓冲区命中率,则将所述最大缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述最大预设缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量,并按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页。
通过上述服务器,可以在满足所述目标租户的最大缓冲区命中率需求的前提下,利用所述未来缓冲区命中率与所述最大缓冲区命中率的差值进行计算,得到所述目标缓冲区富余的数据页的容量,从而将所述目标租户富余的数据页进行释放,避免资源浪费。
在一些实现方式中,所述第一管理单元具体用于:
按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,并将释放出的所述第一容量的数据页添加到空闲缓冲区中,所述空闲缓冲区中的数据页用于供所述多租户中需要添加数据页的租户使用。
通过上述服务器,可以将从所述目标租户的缓冲区中释放出的数据页添加到空闲缓冲区中,既可以保障所述目标租户的访问性能需求,又能够将所述目 标租户富余的缓冲区资源释放出来,以供给所述多租户中其他需要增加缓冲区容量的租户(包括所述目标租户、所述多租户中的其他租户以及所述服务器新增加的租户)或者服务器中的其他业务使用,提高多租户的整体性能和缓冲区的资源利用率。
在一些实现方式中,所述第一管理单元包括:
第二判断单元,用于若所述比较单元比较出所述未来缓冲区命中率大于所述期望缓冲区命中率,则判断所述未来缓冲区命中率是否大于所述目标租户预设的最大缓冲区命中率,所述最大缓冲区命中率大于所述期望缓冲区命中率;
第二计算单元,用于若所述第二判断单元判断出所述未来缓冲区命中率小于或等于所述目标租户预设的最大缓冲区命中率,则将所述期望缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述期望缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量,并按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页。
通过上述服务器,可以在满足所述目标租户的期望缓冲区命中率需求的情况下,利用所述目标租户的未来缓冲区命中率与所述期望缓冲区命中率的差值进行计算,得到所述目标租户富余的数据页的容量,从而将所述目标租户富余的数据页进行释放,避免资源浪费。
在一些实现方式中,所述第一管理单元具体用于:
按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,所述释放出的数据页用于供所述多租户中其他需要添加数据页的租户使用,所述第一容量小于或等于所述其他需要添加数据页的租户待添加的数据页容量。
通过上述服务器,可以在所述多租户中其他租户有数据页需求时,将从所述目标租户的缓冲区中释放出的数据页分配给其他租户使用,既可以保障所述目标租户的访问性能需求,又能够将所述目标租户富余的缓冲区资源释放出来,以供给所述多租户中其他需要添加数据页的租户使用,提高多租户的整体性能和缓冲区的资源利用率。
在一些实现方式中,所述第二管理单元包括:
第三判断单元,用于若所述比较单元比较出所述未来缓冲区命中率小于所述期望缓冲区命中率,则判断所述未来缓冲区命中率是否小于所述目标租户预 设的最小缓冲区命中率,所述最小缓冲区命中率小于所述期望缓冲区命中率,所述最小缓冲区命中率为所述目标租户对缓冲区命中率的最小需求值,所述目标租户在所述服务器上申请注册时,可以对所述最小缓冲区命中率进行设置;
第三计算单元,用于若所述第三判断单元判断出所述未来缓冲区命中率小于所述目标租户预设的最小缓冲区命中率,则将所述最小缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述最小缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量,并按照所述第二容量为所述目标缓冲区添加数据页。
通过上述服务器,为保障所述目标租户的最小缓冲区命中率需求,利用所述目标租户的最小缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得出所述目标租户至少需要添加第二容量的数据页,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
在一些实现方式中,所述第二管理单元包括:
第四判断单元,用于若所述比较单元比较出所述未来缓冲区命中率小于所述期望缓冲区命中率,则判断所述未来缓冲区命中率是否小于所述目标租户预设的最小缓冲区命中率,所述最小缓冲区命中率小于所述期望缓冲区命中率;
第四计算单元,用于若所述第四判断单元判断出所述未来缓冲区命中率大于或等于所述目标租户预设的最小缓冲区命中率,则将所述期望缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述期望缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量,并按照所述第二容量为所述目标缓冲区添加数据页。
通过上述服务器,为保障所述目标租户的期望缓冲区命中率需求,利用所述目标租户的期望缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得到所述目标租户目前所需的数据页的容量,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
在一些实现方式中,所述比较单元具体用于:
判断所述未来缓冲区命中率减去所述期望缓冲区命中率的差值是否大于第一预设阈值,或者,判断所述期望缓冲区命中率减去所述未来缓冲区命中率的差值是否大于第二预设阈值;
若所述未来缓冲区命中率减去所述期望缓冲区命中率的差值大于所述第一 预设阈值,则所述未来缓冲区命中率大于所述期望缓冲区命中率;若所述期望缓冲区命中率减去所述未来缓冲区命中率的差值大于所述第二预设阈值,则所述未来缓冲区命中率小于所述期望缓冲区命中率。通过设置浮动值(即所述第一预设阈值和所述第二预设阈值),可以更加灵活地判断是否有必要调整所述目标缓冲区的容量。
在一些实现方式中,所述预测单元执行所述根据预设历史时间段内目标租户的历史缓冲区命中率,按照预设规则预测所述目标租户的未来缓冲区命中率这一操作由以下至少一个事件触发:预设周期到达;预设时间点到达;缓冲区命中率低于预设缓冲区命中率阈值的租户的个数大于或等于预设个数阈值。在满足触发事件时,服务器可以及时了解所述目标租户的缓冲区命中率情况,进而及时地对所述目标缓冲区的容量进行调整。
第三方面,提供了一种服务器,包括处理器和存储器,其中,所述服务器可例如数据库服务器,可应用于大规模处理的数据库处理系统,所述数据库处理系统包括但不限于:分布式磁盘数据库系统、集群数据库系统和mpp数据库系统。且所述服务器可以为普通服务器,也可以为云服务器;所述存储器用于存储面向多租户的缓冲区管理程序代码,所述处理器用于调用所述存储器存储的程序代码执行上述第一方面或第一方面任一种实现方式所描述的面向多租户的缓冲区管理方法。
在本发明的一些实现方式中,所述第一预设算法为:c1=(a-b)*d,其中,c1为所述第一容量,a为所述未来缓冲区命中率,b为所述第一预设缓冲区命中率,d为所述预设的缓冲区容量。通过第一预设算法可以计算出所述目标缓冲区可以释放出的数据页容量。
在本发明的一些实现方式中,所述第一预设算法为:c1=min((a-b)*d,e),其中,c1为所述第一容量,a为所述未来缓冲区命中率,b为所述第一预设缓冲区命中率,d为所述预设的缓冲区容量,e为所述多租户中其他租户待添加的数据页容量。通过将所述目标租户可释放出的数据页容量与其他租户待添加的数据页容量进行比较,可确定出所述目标缓冲区实际释放的数据页容量。
在本发明的一些实现方式中,所述第二预设算法为:c2=min((f-a)*d,g),其中,c2为所述第二容量,f为所述第二预设缓冲区命中率,a 为所述未来缓冲区命中率,d为所述预设的缓冲区容量,g为所述多租户中其他租户待释放的数据页容量和空闲缓冲区中的数据页容量之和。通过服务器当前可提供的数据页容量与所述目标租户待添加的数据页容量进行比较,可确定出所述目标缓冲区实际添加的数据页容量。
在本发明的一些实现方式中,所述预设的缓冲区容量包括:所述目标租户预设的最小缓冲区容量、所述目标租户预设的期望缓冲区容量、所述目标租户预设的最大缓冲区容量和所述目标缓冲区当前的容量中的至少一种。所述目标租户在服务器上申请注册时,可以分别对所述最小缓冲区容量、所述期望缓冲区容量和所述最大缓冲区容量进行设置。
在本发明的一些实现方式中,所述预设历史时间段可以为过去的一个时间段,也可以为过去的至少两个时间段。例如,所述预设历史时间段可由所述服务器当前的预测时间点和与所述当前预测时间点的时间间隔最短的一个历史预测时间点所组成的时间段,也可以是所述当前的预测时间点与预设的预测时间点之间每两个相邻的预测时间点所组成的p(p为正整数,且p≥1)个时间段,还可以为所述p个时间段中的任意q(q为正整数,且1≤q≤p)个时间段。其中,所述预设的预测时间点可包括但不限于所述服务器启动运行后的第一个预测时间点。
在本发明的一些实现方式中,所述预设规则包括:根据所述目标租户的n(n为正整数,n≥1)个历史缓冲区命中率,计算所述n个历史缓冲区命中率的平均缓冲区命中率,将所述平均缓冲区命中率确定为所述目标租户的未来缓冲区命中率;或者,根据所述目标租户的m(m为正整数,m≥2)个历史缓冲区命中率的变化趋势,预测所述目标租户的未来缓冲区命中率。
实施本发明实施例,根据预测得到的多租户中的目标租户的未来缓冲区命中率以及所述目标租户预设的缓冲区命中率,来动态调整多租户中的目标租户对应的目标缓冲区的容量,既可以避免因缓冲区不足而影响租户的访问性能,又可以避免因缓冲区过大而造成资源浪费。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本发明实施例提供的服务器中数据库缓冲区的架构示意图;
图2是本发明实施例提供的一种面向多租户的缓冲区管理方法的流程示意图;
图3是本发明实施例提供的一种服务器的结构示意图;
图4是本发明实施例提供的另一种服务器的结构示意图;
图5是本发明实施例提供的另一种服务器的结构示意图;
图6是本发明实施例提供的另一种服务器的结构示意图;
图7是本发明实施例提供的另一种服务器的结构示意图;
图8是本发明实施例提供的另一种服务器的结构示意图。
具体实施方式
下面将结合附图,对本发明的实施例进行描述。
需要说明的是,在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。尽管在本发明实施例中可能采用术语“第一”、“第二”和“第三”等来描述各种功能模块或单元,但这些专有名词、功能模块或单元不应限于这些术语。这些术语仅用来将各功能模块或单元彼此区分开,不存在前后顺序限定的意思。此外,本发明实施例中的“多租户”包括至少两个租户。
以下各实施例中所描述的服务器可安装有数据库管理系统软件,具体可以为数据库服务器,可应用于大规模处理的数据库处理系统,所述数据库处理系统包括但不限于:分布式磁盘数据库系统、集群数据库系统和mpp数据库系统。且所述服务器可以为普通服务器,也可以为云服务器。其中,普通服务器是指独立的服务器,具体可以为一台或多台计算机,可部署在局域网中为多个用户(可理解为租户)提供服务,该普通服务器中存储有多个用户各自的用户数据,多个用户可通过局域网访问该普通服务器;云服务器是基于云架构的服务器集群,有多台服务器,部署在云端,多个租户从云端租用计算资源、存储资源等。该云服务器中存储有多个租户各自的租户数据,多个租户可通过互联网访问该 云服务器,其中,这些服务包括但不限于:查询、更新、存储等。
下面先介绍本发明提供的缓冲区管理方案的总体构思,后续再详细说明本发明方案的详细步骤。首先,请参见图1,是本发明实施例提供的服务器中数据库缓冲区的架构示意图,结合图1说明本发明提供的面向多租户的缓冲区管理方法的总体构思:在图1中,服务器面向4个租户,4个租户的标识分别为t1、t2、t3和t4,4个租户均已在该服务器上申请注册,且4个租户在服务器中注册创建的时候,服务器从操作系统的内存中分别为4个租户分配了一定容量的私有缓冲区,这里为了便于区分,将4个私有缓冲区的名称分别命名为buffer1、buffer2、buffer3和buffer4,4个私有缓冲区的容量可以相同,也可以不同,假定4个缓冲区的容量分别为2gb(gigabyte,千兆字节)、2gb、1gb和3gb。此外,本发明中服务器还设定了一定的共享资源,即图1所示的空闲缓冲区。
其中,空闲缓冲区由若干个空闲的数据页构成,该数据页可以是服务器预留的数据页,也可以是从某些租户的缓冲区中释放出的空数据页。本发明采用动态和静态相结合的方式使用缓冲区,初始时服务器为每个租户分配一定容量的缓冲区资源,在服务器运行过程中,服务器可根据各个租户预先设置的性能需求(具体为各个租户预先设置的缓冲区命中率)以及各个租户的实际性能(具体为当前针对各个租户预测的未来缓冲区命中率),动态调整(包括减少和增加)各个租户的缓冲区容量,从性能较高的租户的缓冲区中适当释放出部分缓冲区到空闲缓冲区中,并从空闲缓冲区中为性能较低的租户添加部分缓冲区,以在满足多租户的整体性能的同时提高缓冲区的资源利用率。
需要说明的是,缓冲区是由若干个数据页(也可称为数据块)构成的,一个数据页的容量通常为4kb(kilobyte,千字节)或8kb,连续的数据页可组成一个缓冲区,缓冲区的容量是指该缓冲区中各个数据页的容量之和。
需要说明的是,图1所示的4个租户的缓冲区中的数据页与空闲缓冲区中数据页的图案不同只是为了作为区分,4个租户的缓冲区中的数据页存储有各个租户对应的数据,该类数据页用于暂存服务器从磁盘等硬件存储节点中读入的数据或即将写入磁盘等硬件存储节点的数据。而空闲缓冲区中的数据页为空闲的数据页,通常情况下,该类数据页中不会存储有租户的数据,避免该类数据页被其他租户使用时查询到上一个使用租户的数据,从而增强各租户的数据安全性。
以下各实施例是以多租户中的目标租户为例进行的说明,针对所述多租户中的其他租户也可同样采用本发明实施例所提供的面向多租户的缓冲区管理方法来实现动态调整其他租户的缓冲区容量。
下面结合图2详细说明本发明的具体实施方式。
请参见图2,是本发明实施例提供的一种面向多租户的缓冲区管理方法的流程示意图。该面向多租户的缓冲区管理方法可应用于但不限于服务器,例如数据库服务器,且所述服务器可以为普通服务器,也可以为云服务器,该面向多租户的缓冲区管理方法包括但不限于以下步骤。
s201:根据预设历史时间段内目标租户的历史缓冲区命中率,按照预设规则预测所述目标租户的未来缓冲区命中率。
具体的,所述目标租户为多租户中的一个。在服务器运行过程中,所述服务器将所述目标租户的历史缓冲区命中率按照预设规则预测得到所述目标租户的未来缓冲区命中率。其中,所述历史缓冲区命中率是指在预设历史时间段内服务器从数据库缓冲区中读取到数据的数量与所述服务器读取数据的总数量的比值,所述服务器读取数据的总数量包括从数据库缓冲区的数据页中读取到的数据数量以及从磁盘等硬件存储节点中读取到的数据数量之和。
可选的,所述服务器将所述目标租户的历史缓冲区命中率按照预设规则预测得到所述目标租户的未来缓冲区命中率这一步骤可由以下至少一个事件触发:预设周期到达(即周期性预测);预设时间点到达(即定时预测);缓冲区命中率低于预设缓冲区命中率阈值的租户的个数大于或等于预设个数阈值。其中,所述预设周期、所述预设的时间点、所述预设缓冲区命中率阈值和所述预设个数阈值均可由所述服务器的系统默认设置,也可由所述服务器的管理员手动设置,本发明实施例不作具体限定。在满足触发事件时,服务器可以及时了解所述目标租户的未来缓冲区命中率情况,进而及时地对所述目标租户的缓冲区容量进行调整。
例如,所述预设周期为30分钟,则所述服务器在运行过程中每隔30分钟预测一次所述目标租户的未来缓冲区命中率;或者,所述预设时间点可为一天中的各个整点(例如3点、7点、8点等)和各个半点(例如3点30分、7点30分、8点30分等),则所述服务器在每个整点或半点到达时预测一次所述目 标租户的未来缓冲区命中率;或者,所述预设缓冲区命中率阈值为80%,所述预设个数阈值为5个,则所述服务器在检测出缓冲区命中率低于80%的租户的个数大于或等于5个时,预测所述目标租户的未来缓冲区命中率。
可选的,所述预设历史时间段可以为过去的一个时间段,也可以为过去的至少两个时间段,本发明实施例不作具体限定。例如,所述预设历史时间段可由所述服务器当前的预测时间点和与所述当前预测时间点的时间间隔最短的一个历史预测时间点所组成的时间段,也可以是所述当前的预测时间点与预设的预测时间点之间每两个相邻的预测时间点所组成的p(p为正整数,且p≥1)个时间段,还可以为所述p个时间段中的任意q(q为正整数,且1≤q≤p)个时间段。其中,所述预设的预测时间点可包括但不限于所述服务器启动运行后的第一个预测时间点。例如,所述服务器当前对所述目标租户的未来缓冲区命中率进行预测时的时间点为上午11点,与上午11点的时间间隔最短的一个历史预测时间点为上午10点30分,则所述预设历史时间段为10:30:00-11:00:00;或者,所述服务器当前的预测时间点为上午11点,预设的预测时间点为上午8点,所述服务器设置的预测周期为半小时,则所述预设历史时间段分别为08:00:00-08:30:00、08:30:00-09:00:00、09:00:00-09:30:00、09:30:00-10:00:00、10:00:00-10:30:00和10:30:00-11:00:00;或者,所述预设历史时间段为上述6个时间段中的任意三个:08:00:00-08:30:00、09:00:00-09:30:00和10:00:00-10:30:00。
可选的,所述预设规则包括但不限于:根据所述目标租户的n(n为正整数,1≤n≤p)个历史缓冲区命中率,计算所述n个历史缓冲区命中率的平均缓冲区命中率,将所述平均缓冲区命中率确定为所述目标租户的未来缓冲区命中率;或者,根据所述目标租户的m(m为正整数,2≤m≤p)个历史缓冲区命中率的变化趋势,预测所述目标租户的未来缓冲区命中率。
例如,所述预设历史时间段为10:30:00-11:00:00,所述服务器在上午11点统计得到所述目标租户在10:30:00-11:00:00这一时间段的历史缓冲区命中率为95%,则将95%确定为所述目标租户的未来缓冲区命中率;或者,所述预设历史时间段分别为08:00:00-08:30:00、08:30:00-09:00:00、09:00:00-09:30:00、09:30:00-10:00:00、10:00:00-10:30:00和10:30:00-11:00:00,所述服务器在上午11点得到所述目标租户在上述6个历史时间段内的历史缓冲区命中率分别为95%、90%、85%、95%、85%、90%,则计算6个历史缓冲区命中率的平均缓 冲区命中率,将计算得到的平均缓冲区命中率90%确定为所述目标租户的未来缓冲区命中率;或者,所述预设历史时间段分别为08:00:00-08:30:00、08:30:00-09:00:00、09:00:00-09:30:00、09:30:00-10:00:00、10:00:00-10:30:00和10:30:00-11:00:00,所述服务器在上午11点得到所述目标租户在上述6个历史时间段内的历史缓冲区命中率分别为95%、90%、85%、95%、85%、90%,则根据6个历史缓冲区命中率的变化趋势,将95%确定为所述目标租户的未来缓冲区命中率。
s202:比较所述未来缓冲区命中率与所述目标租户预设的期望缓冲区命中率的大小。
具体的,所述期望缓冲区命中率为所述目标租户对缓冲区命中率的平均需求值,所述目标租户在所述服务器中申请注册时即可对所述期望缓冲区命中率进行设置,所述目标租户可以只设置所述期望缓冲区命中率,也可以同时设置三个缓冲区命中率,分别为最大缓冲区命中率、期望缓冲区命中率和最小缓冲区命中率,其中,所述最大缓冲区命中率>所述期望缓冲区命中率>所述最小缓冲区命中率,所述最大缓冲区命中率和所述最小缓冲区命中率会在后续进行详细描述。所述服务器根据所述目标租户的未来缓冲区命中率与所述期望缓冲区命中率之间的大小关系来判断是否需要调整所述目标租户对应的目标缓冲区的容量。若所述未来缓冲区命中率大于所述期望缓冲区命中率,或者所述未来缓冲区命中率小于所述期望缓冲区命中率,则判断的结果为需要对所述目标缓冲区的容量进行调整,若所述未来缓冲区命中率等于所述期望缓冲区命中率,则可以对所述目标缓冲区的容量不进行调整,或者根据实际需要确定是否需要对所述目标缓冲区的容量进行调整。
可选的,所述比较所述未来缓冲区命中率与所述目标租户预设的期望缓冲区命中率的大小,包括:
判断所述未来缓冲区命中率减去所述期望缓冲区命中率的差值是否大于第一预设阈值,或者,判断所述期望缓冲区命中率减去所述未来缓冲区命中率的差值是否大于第二预设阈值;若所述未来缓冲区命中率减去所述期望缓冲区命中率的差值大于所述第一预设阈值,则所述未来缓冲区命中率大于所述期望缓冲区命中率;若所述期望缓冲区命中率减去所述未来缓冲区命中率的差值大于所述第二预设阈值,则所述未来缓冲区命中率小于所述期望缓冲区命中率。
其中,所述第一预设阈值和所述第二预设阈值可由所述服务器的操作系统默认设置,也可以由所述服务器的管理员手动设置,且所述第一预设阈值和所述第二预设阈值可以相同,也可以不同,本发明实施例不作具体限定。通过设置浮动值(即所述第一预设阈值和所述第二预设阈值),可以更加灵活地判断是否有必要调整所述目标缓冲区的容量。例如,所述第一预设阈值为2%,所述未来缓冲区命中率为95%,所述期望缓冲区命中率为90%,所述未来缓冲区命中率减去所述期望缓冲区命中率的差值大于2%,则判断的结果为所述未来缓冲区命中率大于所述期望缓冲区命中率;或者,所述第二预设阈值为2%,所述未来缓冲区命中率为85%,所述期望缓冲区命中率为90%,所述期望缓冲区命中率减去所述未来缓冲区命中率的差值大于2%,则判断的结果为所述未来缓冲区命中率小于所述期望缓冲区命中率。
s203:若所述未来缓冲区命中率大于所述期望缓冲区命中率,则根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,并按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页;其中所述第一预设缓冲区命中率小于所述未来缓冲区命中率。
具体的,若所述目标租户的未来缓冲区命中率大于所述期望缓冲区命中率,则利用所述目标租户的未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值进行计算,得到所述目标租户富余的数据页的容量,从而按照所述第一容量将所述目标租户富余的数据页进行释放,避免资源浪费。其中,从所述目标缓冲区中释放出的数据页可供所述多租户中其他需要增加缓冲区容量的租户(包括所述目标租户、所述多租户中的其他租户以及所述服务器新增加的租户)或者服务器中的其他业务使用。
可选的,所述第一预设算法为:c1=(a-b)*d,其中,c1为所述第一容量,a为所述未来缓冲区命中率,b为所述第一预设缓冲区命中率,d为所述预设的缓冲区容量。其中,所述预设的缓冲区容量包括:所述目标租户预设的最小缓冲区容量、所述目标租户预设的期望缓冲区容量、所述目标租户预设的最大缓冲区容量和所述目标缓冲区当前的容量中的至少一种。所述目标租户在服务器上申请注册时,可以分别对所述最小缓冲区容量、所述期望缓冲区容量和所述最大缓冲区容量进行设置,也可以只针对其中的一个缓冲区容量进行设 置。例如,所述目标租户设置的最小缓冲区容量为1gb,期望缓冲区容量为1.5gb,最大缓冲区容量为2gb。
可选的,所述第一预设算法为:c1=min((a-b)*d,e),其中,c1为所述第一容量,a为所述未来缓冲区命中率,b为所述第一预设缓冲区命中率,d为所述预设的缓冲区容量,根据公式(a-b)*d可以计算出所述目标租户可提供的数据页容量,e为所述多租户中其他租户待添加的数据页容量。若所述目标租户可提供的数据页容量大于或等于所述其他租户待添加的数据页容量,则所述第一容量等于所述其他租户待添加的数据页容量;若所述目标租户可提供的数据页容量小于所述其他租户待添加的数据页容量,则所述第一容量等于所述目标租户可提供的数据页容量。从而可以按照其他租户的需求来确定所述目标缓冲区实际需要释放的数据页容量,既能够保障所述目标租户的性能需求,又能将数据页提供给其他有需求的租户使用,提高多租户的整体性能以及缓冲区的利用率。
可选的,所述根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,包括:
将所述期望缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述期望缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
具体的,如果所述目标租户在初始设置时只对期望缓冲区命中率进行了设置,若判断出所述目标租户的未来缓冲区命中率大于所述期望缓冲区命中率,则可以表明在未来的一段时间内服务器可以满足所述目标租户的期望缓冲区命中率需求,在这种情况下,可以利用所述目标租户的未来缓冲区命中率与所述期望缓冲区命中率的差值进行计算,得到所述目标租户富余的数据页的容量为第一容量,从而将所述目标租户富余的第一容量的数据页进行释放,避免资源浪费。
例如,所述未来缓冲区命中率为95%,所述期望缓冲区命中率为90%,所述目标缓冲区当前的容量为2gb,则根据所述第一预设算法c1=(a-b)*d,计算出所述第一容量c1=(95%-90%)*2gb=102mb(megabyte,兆字节)。
可选的,所述根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,包括:
判断所述未来缓冲区命中率是否大于所述目标租户预设的最大缓冲区命中率,所述最大缓冲区命中率大于所述期望缓冲区命中率;
若是,则将所述最大缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述最大预设缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
具体的,所述最大缓冲区命中率为所述目标租户对缓冲区命中率的最大需求值,所述目标租户在所述服务器上申请注册时,可以对所述最大缓冲区命中率进行设置,如果所述目标租户在初始设置时分别对期望缓冲区命中率和最大缓冲区命中率进行了设置,若判断出所述目标租户的未来缓冲区命中率大于所述期望缓冲区命中率,则需要进一步判断所述未来缓冲区命中率是否大于所述最大缓冲区命中率,若是,则可以表明在未来的一段时间内服务器可以满足所述目标租户的最大缓冲区命中率需求,在这种情况下,可以利用所述目标租户的未来缓冲区命中率与所述最大缓冲区命中率的差值进行计算,得出所述目标租户富余的数据页的容量为第一容量,所述第一容量为所述目标租户当前至少可以释放出的数据页的容量,将所述目标租户富余的数据页进行释放,避免资源浪费。
例如,所述未来缓冲区命中率为95%,所述期望缓冲区命中率为90%,所述最大缓冲区命中率为94%,所述目标租户预设的最小缓冲区容量为1gb,则根据所述第一预设算法c1=(a-b)*d,计算出所述第一容量c1=(95%-94%)*1gb=10*0mb。
可选的,若判断出所述目标租户的未来缓冲区命中率大于所述最大缓冲区命中率,则可以表明在未来的一段时间内服务器可以满足所述目标租户的最大缓冲区命中率需求,在满足所述目标租户的期望缓冲区命中率需求的情况下,也可以利用所述目标租户的未来缓冲区命中率与所述期望缓冲区命中率的差值进行计算,得出所述目标租户可释放出的数据页为第一容量,所述第一容量表示所述目标租户当前至多可以释放出的数据页的容量,将所述目标租户富余的数据页进行释放,避免资源浪费。
例如,所述未来缓冲区命中率为95%,所述期望缓冲区命中率为90%,所述最大缓冲区命中率为94%,所述目标租户预设的最小缓冲区容量为1gb,则根据所述第一预设算法c1=(a-b)*d,计算出所述第一容量c1=(95%- 90%)*1gb=51.2mb。
可选的,所述按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,包括:
按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,并将释放出的所述第一容量的数据页添加到空闲缓冲区中,所述空闲缓冲区中的数据页用于供所述多租户中需要添加数据页的租户使用。
具体的,当计算出所述第一容量后,按照计算得到的所述第一容量释放所述目标缓冲区的数据页,并将释放出的数据页添加到所述服务器的空闲缓冲区中。所述空闲缓冲区中的数据页可供需要添加数据页的租户或者所述服务器的其他业务使用,从而提高多租户的整体性能和缓冲区的利用率,其中,所述需要添加数据页的租户包括但不限于:所述目标租户、所述多租户中的其他租户和所述服务器新增加的租户。
例如,若所述第一容量为10.2mb,如果每个数据页的容量为8kb,则所述目标缓冲区需要释放10.2mb/8kb≈1306个数据页,将从所述目标缓冲区中释放的1306个数据页添加到空闲缓冲区中。
可选的,如果所述目标租户初始时只对期望缓冲区命中率进行了设置,则当判断出所述未来缓冲区命中率大于所述期望缓冲区命中率时,可以将从所述目标缓冲区中释放出的第一容量的数据页添加到空闲缓冲区中;或者,如果所述目标租户初始时对期望缓冲区命中率和最大缓冲区命中率分别进行了设置,则当判断出所述未来缓冲区命中率大于所述最大缓冲区命中率时,可以将从所述目标缓冲区中释放出的第一容量的数据页添加到空闲缓冲区中,从而将所述目标租户富余的数据页释放出来,避免资源浪费。
可选的,所述根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,包括:
判断所述未来缓冲区命中率是否大于所述目标租户预设的最大缓冲区命中率,所述最大缓冲区命中率大于所述期望缓冲区命中率;
若否,则将所述期望缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述期望缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
具体的,如果所述目标租户在初始设置时分别对期望缓冲区命中率和最大 缓冲区命中率进行了设置,若判断出所述目标租户的未来缓冲区命中率大于所述期望缓冲区命中率,则需要进一步判断所述未来缓冲区命中率是否大于所述最大缓冲区命中率,若否,则可以表明在未来的一段时间内服务器不能满足所述目标租户的最大缓冲区命中率需求,但是可以满足所述目标租户的期望缓冲区命中率需求,在这种情况下,可以利用所述目标租户的未来缓冲区命中率与所述期望缓冲区命中率的差值进行计算,得到所述目标租户富余的数据页的容量为第一容量,将所述目标租户富余的数据页进行释放,避免资源浪费。
例如,所述未来缓冲区命中率为95%,所述期望缓冲区命中率为90%,所述最大缓冲区命中率为96%,所述目标租户预设的期望缓冲区容量为1.5gb,则根据所述第一预设算法c1=(a-b)*d,计算出所述第一容量c1=(95%-90%)*1.5gb=76.8mb。
可选的,所述按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,包括:
按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,所述释放出的数据页用于供所述多租户中其他需要添加数据页的租户使用,所述第一容量小于或等于所述其他需要添加数据页的租户待添加的数据页容量。
具体的,当计算出所述第一容量后,按照计算得到的所述第一容量释放所述目标缓冲区的数据页,并将释放出的数据页添加到其他需要添加数据页的租户对应的缓冲区中,以供给其他租户使用。从而在保障所述目标租户的访问性能的前提下,提供部分数据页给其他需要数据页的租户使用,提高缓冲区的利用率。
需要说明的是,当判断出其他租户需要添加数据页并且所述空闲缓冲区中剩余的数据页不足时,计算所述第一容量,并按照所述第一容量释放所述目标缓冲区中的数据页,将从所述目标缓冲区中释放出的数据页添加到所述其他租户的缓冲区中,从而可以按照其他租户的需求来释放所述目标缓冲区中的数据页,在不同租户之间动态调配数据页,有利于提高缓冲区的利用率。
例如,所述未来缓冲区命中率为95%,所述期望缓冲区命中率为90%,所述最大缓冲区命中率为96%,所述目标租户预设的期望缓冲区容量为1.5gb,所述多租户中有两个租户需要添加数据页:第一租户需要添加10mb的数据页,第二租户需要添加20mb的数据页,且此时所述空闲缓冲区中没有剩余的数据 页,则根据所述第一预设算法c1=min((a-b)*d,e),计算出所述目标租户可提供出的数据页容量为(a-b)*d=(95%-90%)*1.5gb=76.8mb,d=10mb+20mb=30mb,则计算出所述第一容量c1=(76.8mb,30mb)=30mb。则从所述目标缓冲区中释放30mb的数据页,并将其中的10mb数据页添加到第一租户对应的缓冲区中,将另外20mb的数据页添加到第二租户对应的缓冲区中。
需要说明的是,本发明实施例中所描述的释放所述目标缓冲区的数据页这一步骤具体为:先将待释放的数据页中的数据进行清除,再将其添加到所述空闲缓冲区中(或者添加到其他需要添加数据页的租户对应的缓冲区中,或者添加到服务器内存中的其他区域),并且在清除某一数据页中的数据之前,可先判断该数据页中的数据是否已进行更新(即修改)或该数据页中是否增加了新的数据,若是,则需要先将该数据页中的数据写到磁盘等硬件存储节点中,以实现对硬件存储节点中的数据进行更新,然后再将该数据页中的数据清除,避免其他租户后续使用该数据页时访问到所述目标租户的数据,从而提高多租户的数据安全性。
s204:若所述未来缓冲区命中率小于所述期望缓冲区命中率,则根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,并按照所述第二容量为所述目标缓冲区添加数据页;其中所述第二预设缓冲区命中率大于所述未来缓冲区命中率。
具体的,若所述目标租户的未来缓冲区命中率小于所述期望缓冲区命中率,则利用所述期望缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得到所述目标租户目前所需的数据页的容量,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
可以理解的是,目标缓冲区中数据页的总容量会对访问性能产生至关重要的影响,目标缓冲区中数据页的总容量越大,可缓存的数据越多,目标租户通过服务器访问数据时,所述服务器从缓冲区中查询到数据的几率越大,响应速度越快,访问性能也就越好。
具体的,所述第二预设算法为:c2=min((f-a)*d,g),其中,c2为所述第二容量,f为所述第二预设缓冲区命中率,a为所述未来缓冲区命中率,d为所述预设的缓冲区容量,(f-a)*d为所述目标租户待添加的数据页容量, g为所述多租户中其他租户待释放的数据页容量和空闲缓冲区中的数据页容量之和。若所述目标租户待添加的数据页容量大于或等于所述多租户中其他租户待释放的数据页容量和空闲缓冲区中的数据页容量之和,则所述第二容量等于所述多租户中其他租户待释放的数据页容量和空闲缓冲区中的数据页容量之和;若所述目标租户待添加的数据页容量小于所述多租户中其他租户待释放的数据页容量和空闲缓冲区中的数据页容量之和,则所述第二容量等于所述目标租户待添加的数据页容量。
其中,所述预设的缓冲区容量包括:所述目标租户预设的最小缓冲区容量、所述目标租户预设的期望缓冲区容量、所述目标租户预设的最大缓冲区容量和所述目标缓冲区当前的容量中的至少一种。所述目标租户在服务器上申请注册时,可以分别对所述最小缓冲区容量、所述期望缓冲区容量和所述最大缓冲区容量进行设置。
可选的,所述根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,包括:
将所述期望缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述期望缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量。
具体的,如果所述目标租户在初始设置时只对期望缓冲区命中率进行了设置,若判断出所述目标租户的未来缓冲区命中率小于所述期望缓冲区命中率,则可以表明在未来的一段时间内服务器不能满足所述目标租户的期望缓冲区命中率需求,为保障所述目标租户的期望缓冲区命中率需求,可以利用所述目标租户的期望缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得到所述目标租户需要添加的数据页的容量为第二容量,从而为所述目标租户添加第二容量的数据页,保障所述目标租户的访问性能需求。
例如,所述未来缓冲区命中率为85%,所述期望缓冲区命中率为90%,所述目标缓冲区当前的容量为2gb,所述多租户中其他租户待释放的数据页总容量和所述空闲缓冲区中的数据页容量之和为20mb+1gb=1044mb,则根据所述第二预设算法c2=mnn((f-a)*d,g),计算出所述目标租户待添加的数据页容量为:(f-a)*d=(90%-85%)*2gb=102mb,则计算出所述第二容量c2=min(102mb,1044mb)=102mb,则为所述目标缓冲区添加102mb的数 据页,由于所述空闲缓冲区中的数据页足够提供给所述目标租户,则将所述空闲缓冲区中102mb的数据页添加到所述目标缓冲区中。
可选的,所述根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,包括:
判断所述未来缓冲区命中率是否小于所述目标租户预设的最小缓冲区命中率,所述最小缓冲区命中率小于所述期望缓冲区命中率;
若是,则将所述最小缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述最小缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量。
具体的,所述最小缓冲区命中率为所述目标租户对缓冲区命中率的最小需求值,所述目标租户在所述服务器上申请注册时,可以对所述最小缓冲区命中率进行设置,如果所述目标租户在初始设置时对期望缓冲区命中率和最小缓冲区命中率均进行了设置,若判断出所述目标租户的未来缓冲区命中率小于所述期望缓冲区命中率,则需要进一步判断所述未来缓冲区命中率是否小于所述最小缓冲区命中率,若是,则可以表明在未来的一段时间内服务器不能满足所述目标租户的最小缓冲区命中率需求,为保障所述目标租户的最小缓冲区命中率需求,可以利用所述目标租户的最小缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得到所述目标租户至少需要添加第二容量的数据页,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
例如,所述未来缓冲区命中率为80%,所述期望缓冲区命中率为90%,所述最小缓冲区命中率为85%,所述预设的最小缓冲区容量为1gb,所述多租户中其他租户待释放的数据页总容量和所述空闲缓冲区中的数据页容量之和为50mb+20mb=70mb,则根据所述第二预设算法c2=min((f-a)*d,g),计算出所述目标租户待添加的数据页容量为(85%-80%)*1gb=51.2mb,则计算出所述第二容量c2=min(51.2mb,70mb)=51.2mb。则可以优先将所述空闲缓冲区中剩余的20mb数据页添加到所述目标缓冲区中,并从其他可释放数据页的租户对应的缓冲区中释放31.2mb的数据页,并将释放出的31.2mb的数据页添加到所述目标缓冲区中。
可选的,所述根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,包括:
判断所述未来缓冲区命中率是否小于所述目标租户预设的最小缓冲区命中率,所述最小缓冲区命中率小于所述期望缓冲区命中率;
若否,则将所述期望缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述期望缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量。
具体的,如果所述目标租户在初始设置时对期望缓冲区命中率和最小缓冲区命中率均进行了设置,若判断出所述目标租户的未来缓冲区命中率小于所述期望缓冲区命中率,则需要进一步判断所述未来缓冲区命中率是否小于所述最小缓冲区命中率,若否,则可以表明在未来的一段时间内服务器可以满足所述目标租户的最小缓冲区命中率,但是不能满足所述目标租户的期望缓冲区命中率需求,为保障所述目标租户的期望缓冲区命中率需求,可以利用所述目标租户的期望缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得到所述目标租户至少需要添加第二容量的数据页,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
例如,所述未来缓冲区命中率为85%,所述期望缓冲区命中率为90%,所述最小缓冲区命中率为80%,所述目标租户预设的期望缓冲区容量为1.5gb,所述多租户中其他租户待释放的数据页总容量和所述空闲缓冲区中的数据页容量之和为50mb+0mb=50mb,则根据所述第二预设算法c2=min((f-a)*d,g)计算出所述目标租户待添加的数据页容量为(f-a)*d=(90%-85%)*1.5gb=76.8mb,则计算出第二容量c2=min(76.8mb,50mb)=50mb。由于所述空闲缓冲区中没有剩余的数据页,则从其他可释放数据页的租户对应的缓冲区中释放50mb的数据页,并将释放出的50mb的数据页添加到所述目标缓冲区中。
可选的,若所述目标租户的未来缓冲区命中率小于所述最小缓冲区命中率,则所述目标租户属于第一优先级租户,若所述目标租户的未来缓冲区命中率大于所述最小缓冲区命中率且小于所述期望缓冲区命中率,则所述目标租户属于第二优先级租户,所述第一优先级租户相较于所述第二优先级租户来说具有优先添加缓冲区中数据页的权限。在空闲缓冲区中数据页不足时,可以优先为高需求的租户提供数据页,尽可能的保障多租户的整体性能。例如,租户t1对应的未来缓冲区命中率小于租户t1对应的最小缓冲区命中率,租户t2对应的未 来缓冲区命中率大于租户t2对应的最小缓冲区命中率且小于租户t2对应的期望缓冲区命中率,则所述服务器优先为租户t1添加缓冲区中的数据页,再为租户t2添加缓冲区中的数据页,优先保障高优先级租户的缓冲区需求。
可见,在图2所描述的方法中,根据预测得到的多租户中的目标租户的未来缓冲区命中率以及所述目标租户预设的缓冲区命中率,来动态调整多租户中的目标租户对应的目标缓冲区的容量,既可以避免因缓冲区不足而影响租户的访问性能,又可以避免因缓冲区过大而造成资源浪费。
为了便于更好地实施本发明实施例的上述面向多租户的缓冲区管理方法,本发明还提供了用于实现实施上述方法的服务器。
请参见图3,是本发明实施例提供的一种服务器的结构示意图。如图3所示的服务器30可以通用计算机设备的形式表现。服务器30的组件可以包括但不限于:一个或者多个处理器或者处理单元301、存储器302、连接不同系统组件(包括处理器301和存储器302)的总线303。其中,
总线303表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industrystandardarchitecture,isa)总线,微通道体系结构(microchannelarchitecture,mac)总线,增强型isa总线、视频电子标准协会(videoelectronicsstandardsassociation,vesa)局域总线以及外围组件互连(peripheralcomponentinterconnect,pci)总线。
服务器30典型地包括多种计算机系统可读介质,这些介质可以是任何能够被服务器30访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器302可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(randomaccessmemory,ram)3021和/或高速缓存存储器3022。服务器30可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统3023可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非 易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线303相连。存储器302用于存储数据,具体包括应用程序数据、处理器执行的结果数据或处理器执行需要的数据,存储器302可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例所描述的面向多租户的缓冲区管理方法。
服务器30还可以具有一组(至少一个)程序模块3025的程序/实用工具3024,可以存储在例如存储器302中,这样的程序模块3025包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块3025通常执行本发明所描述的面向多租户的缓冲区管理方法。
服务器30也可以与一个或多个外部设备32(例如键盘、鼠标、语音输入设备、触摸输入设备等输入设备,以及显示器31、扬声器、打印机等输出设备等)连接。服务器30还可包含可允许通过例如局域网(lan),广域网(wan)和/或公共网络(例如因特网等)分布式计算环境中的无线网络来与其他计算机设备34进行通信的通信接口304。其他计算机设备34可以包括执行与数据访问和目录服务相关联的应用程序的服务器、客户机(包括但不限于台式计算机、笔记本电脑、平板电脑、手机等移动终端设备)等,该客户机具体可以为各个租户各自对应的客户机,多个租户可以使用客户机通过例如局域网、因特网等网络访问服务器30,从而获取所需的租户数据。通信接口304是通信介质的一个示例。通信介质通常由诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据来体现,并包括任何信息传递介质。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、rf(radiofrequency,射频)、红外线和其它无线介质。此处所使用的术语计算机可读介质包括存储介质和通信介质两者。
服务器30还可以通过系统总线连接至少一个硬件数据库设备33(包括数据库1-数据库n),数据库设备上可存储有多个租户的数据,且各个租户的数据相互隔离,确保多个租户数据的安全性。服务器30在接收到租户通过客户机访问 目标数据的请求时,服务器30首先检查操作系统的缓冲区来确定该租户想要查询的目标数据是否已经被读取出,如果该目标数据先前已被取出,则服务器30将从缓冲区中取出该目标数据并且将其提供给做出访问请求的租户,如果该目标数据先前还没有被取出过,则服务器30访问相关数据库并取出该目标数据提供给做出访问请求的租户。
本领域技术人员可以理解,图3中示出的服务器30的结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,应当明白,尽管图中未示出,可以结合服务器30使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(redundantarraysofindependentdisks,raid)系统、磁带驱动器以及数据备份存储系统等。
处理器301用于读取存储器304存储的面向多租户的缓冲区管理程序代码,并执行如下操作:
处理器301根据预设历史时间段内目标租户的历史缓冲区命中率,按照预设规则预测所述目标租户的未来缓冲区命中率,所述目标租户为所述多租户中的一个;
处理器301比较所述未来缓冲区命中率与所述目标租户预设的期望缓冲区命中率的大小;
若所述未来缓冲区命中率大于所述期望缓冲区命中率,则处理器301根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,并按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页;其中所述第一预设缓冲区命中率小于所述未来缓冲区命中率;
若所述未来缓冲区命中率小于所述期望缓冲区命中率,则处理器301根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,并按照所述第二容量为所述目标缓冲区添加数据页;其中所述第二预设缓冲区命中率大于所述未来缓冲区命中率。
服务器30可以根据目标租户未来的缓冲区命中率需求以及所述目标租户预设的缓冲区命中率需求的大小关系,动态调整所述目标租户对应的目标缓冲区的容量。
可选的,处理器301根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,包括:
处理器301将所述期望缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述期望缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
服务器30可以在满足所述目标租户的期望缓冲区命中率需求的情况下,利用所述目标租户的未来缓冲区命中率与所述期望缓冲区命中率的差值进行计算,得到所述目标租户富余的数据页的容量,从而将所述目标租户富余的数据页进行释放,避免资源浪费。
可选的,处理器301根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,包括:
处理器301将所述期望缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述期望缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量。
为保障所述目标租户的期望缓冲区命中率需求,服务器30利用所述目标租户的期望缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得到所述目标租户目前所需的数据页的容量,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
可选的,处理器301根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,包括:
处理器301判断所述未来缓冲区命中率是否大于所述目标租户预设的最大缓冲区命中率,所述最大缓冲区命中率大于所述期望缓冲区命中率;
若是,则处理器301将所述最大缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述最大预设缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
服务器30可以在满足所述目标租户的最大缓冲区命中率需求的前提下,利用所述未来缓冲区命中率与所述最大缓冲区命中率的差值进行计算,得到所述目标缓冲区富余的数据页的容量,从而将所述目标租户富余的数据页进行释放,避免资源浪费。
可选的,处理器301按照所述第一容量从所述目标租户对应的目标缓冲区 中释放数据页,包括:
处理器301按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,并将释放出的所述第一容量的数据页添加到空闲缓冲区中,所述空闲缓冲区中的数据页用于供所述多租户中需要添加数据页的租户使用。
服务器30可以将从所述目标租户的缓冲区中释放出的数据页添加到空闲缓冲区中,既可以保障所述目标租户的访问性能需求,又能够将所述目标租户富余的缓冲区资源释放出来,以供给所述多租户中其他需要增加缓冲区容量的租户(包括所述目标租户、所述多租户中的其他租户以及所述服务器新增加的租户)或者服务器中的其他业务使用,提高多租户的整体性能和缓冲区的资源利用率。
可选的,处理器301根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,包括:
处理器301判断所述未来缓冲区命中率是否大于所述目标租户预设的最大缓冲区命中率,所述最大缓冲区命中率大于所述期望缓冲区命中率;
若否,则处理器301将所述期望缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述期望缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
服务器30可以在满足所述目标租户的期望缓冲区命中率需求的情况下,利用所述目标租户的未来缓冲区命中率与所述期望缓冲区命中率的差值进行计算,得到所述目标租户富余的数据页的容量,从而将所述目标租户富余的数据页进行释放,避免资源浪费。
可选的,处理器301按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,包括:
处理器301按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,所述释放出的数据页用于供所述多租户中其他需要添加数据页的租户使用,所述第一容量小于或等于所述其他需要添加数据页的租户待添加的数据页容量。
服务器30可以在所述多租户中其他租户有数据页需求时,将从所述目标租户的缓冲区中释放出的数据页分配给其他租户使用,既可以保障所述目标租户的访问性能需求,又能够将所述目标租户富余的缓冲区资源释放出来,以供给 所述多租户中其他需要添加数据页的租户使用,提高多租户的整体性能和缓冲区的资源利用率。
可选的,处理器301根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,包括:
处理器301判断所述未来缓冲区命中率是否小于所述目标租户预设的最小缓冲区命中率,所述最小缓冲区命中率小于所述期望缓冲区命中率;
若是,则处理器301将所述最小缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述最小缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量。
服务器30为保障所述目标租户的最小缓冲区命中率需求,利用所述目标租户的最小缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得出所述目标租户至少需要添加第二容量的数据页,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
可选的,处理器301根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,包括:
处理器301判断所述未来缓冲区命中率是否小于所述目标租户预设的最小缓冲区命中率,所述最小缓冲区命中率小于所述期望缓冲区命中率;
若否,则处理器301将所述期望缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述期望缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量。
服务器30为保障所述目标租户的期望缓冲区命中率需求,利用所述目标租户的期望缓冲区命中率与所述未来缓冲区命中率的差值进行计算,得到所述目标租户目前所需的数据页的容量,从而为所述目标租户添加数据页,保障所述目标租户的访问性能需求。
可选的,所述第一预设算法为:c1=(a-b)*d,其中,c1为所述第一容量,a为所述未来缓冲区命中率,b为所述第一预设缓冲区命中率,d为所述预设的缓冲区容量。
可选的,所述第一预设算法为:c1=min((a-b)*d,e),其中,c1为所述第一容量,a为所述未来缓冲区命中率,b为所述第一预设缓冲区命中率,d为所述预设的缓冲区容量,e为所述多租户中其他租户待添加的数据页容量。
可选的,所述第二预设算法为:c2=min((f-a)*d,g),其中,c2为所述第二容量,f为所述第二预设缓冲区命中率,a为所述未来缓冲区命中率,d为所述预设的缓冲区容量,g为所述多租户中其他租户待释放的数据页容量和空闲缓冲区中的数据页容量之和。
可选的,所述预设的缓冲区容量包括:所述目标租户预设的最小缓冲区容量、所述目标租户预设的期望缓冲区容量、所述目标租户预设的最大缓冲区容量和所述目标缓冲区当前的容量中的至少一种。
可选的,处理器301执行根据预设历史时间段内目标租户的历史缓冲区命中率,按照预设规则预测所述目标租户的未来缓冲区命中率的操作由以下至少一个事件触发:
预设周期到达;预设时间点到达;缓冲区命中率低于预设缓冲区命中率阈值的租户的个数大于或等于预设个数阈值。在满足触发事件时,服务器可以及时了解所述目标租户的缓冲区命中率情况,进而及时地对所述目标缓冲区的容量进行调整。
需要说明的是,本发明实施例所描述的服务器30中各功能模块的功能可根据上述图2所示方法实施例中的方法具体实现,此处不再赘述。
请参见图4,是本发明实施例提供的另一种服务器的结构示意图。如图4所示,服务器40可包括:预测单元401、比较单元403、第一管理单元405和第二管理单元407,其中,
预测单元401,用于根据预设历史时间段内目标租户的历史缓冲区命中率,按照预设规则预测所述目标租户的未来缓冲区命中率,所述目标租户为所述多租户中的一个;
比较单元403,用于比较所述预测单元401预测得到的所述未来缓冲区命中率与所述目标租户预设的期望缓冲区命中率的大小;
第一管理单元405,用于若所述比较单元403比较出所述未来缓冲区命中率大于所述期望缓冲区命中率,则根据所述未来缓冲区命中率与所述目标租户预设的第一预设缓冲区命中率的差值,按照第一预设算法计算出第一容量,并按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页;其中所述第一预设缓冲区命中率小于所述未来缓冲区命中率;
第二管理单元407,用于若所述比较单元403比较出所述未来缓冲区命中率小于所述期望缓冲区命中率,则根据所述目标租户预设的第二预设缓冲区命中率与所述未来缓冲区命中率的差值,按照第二预设算法计算出第二容量,并按照所述第二容量为所述目标缓冲区添加数据页;其中所述第二预设缓冲区命中率大于所述未来缓冲区命中率。
可选的,所述第一管理单元405具体用于:
将所述期望缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述期望缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量。
可选的,所述第二管理单元407具体用于:
将所述期望缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述期望缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量。
可选的,所述第一管理单元405具体用于:
按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,并将释放出的所述第一容量的数据页添加到空闲缓冲区中,所述空闲缓冲区中的数据页用于供所述多租户中需要添加数据页的租户使用。
可选的,所述第一管理单元405具体用于:
按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页,所述释放出的数据页用于供所述多租户中其他需要添加数据页的租户使用,所述第一容量小于或等于所述其他需要添加数据页的租户待添加的数据页容量。
本发明实施例中,服务器40可以根据目标租户未来的缓冲区命中率需求以及所述目标租户预设的缓冲区命中率需求的大小关系,动态调整所述目标租户对应的目标缓冲区的容量。
需要说明的是,本发明实施例所描述的服务器40中各功能单元的功能可根据上述图2所示方法实施例中的方法具体实现,此处不再赘述。
请参见图5,是本发明实施例提供的另一种服务器的结构示意图。其中,图5所示的服务器40是由图4所示的服务器40进行优化得到的。与图4相比,图5所示的服务器40同样包括预测单元401、比较单元403、第一管理单元405和第二管理单元407,且第一管理单元405具体包括:第一判断单元4051和第一 计算单元4053,其中,
第一判断单元4051,用于若所述比较单元403比较出所述未来缓冲区命中率大于所述期望缓冲区命中率,则判断所述未来缓冲区命中率是否大于所述目标租户预设的最大缓冲区命中率,所述最大缓冲区命中率大于所述期望缓冲区命中率;
第一计算单元4053,用于若所述第一判断单元4051判断出所述未来缓冲区命中率大于所述目标租户预设的最大缓冲区命中率,则将所述最大缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述最大预设缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量,并按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页。
需要说明的是,本发明实施例所描述的服务器40中各功能单元的功能可根据上述图2所示方法实施例中的方法具体实现,此处不再赘述。
请参见图6,是本发明实施例提供的另一种服务器的结构示意图。其中,图6所示的服务器40是由图4所示的服务器40进行优化得到的。与图4相比,图6所示的服务器40同样包括预测单元401、比较单元403、第一管理单元405和第二管理单元407,且第一管理单元405具体包括:第二判断单元4055和第二计算单元4057,其中,
第二判断单元4055,用于若所述比较单元403比较出所述未来缓冲区命中率大于所述期望缓冲区命中率,则判断所述未来缓冲区命中率是否大于所述目标租户预设的最大缓冲区命中率,所述最大缓冲区命中率大于所述期望缓冲区命中率;
第二计算单元4057,用于若所述第二判断单元4055判断出所述未来缓冲区命中率小于或等于所述目标租户预设的最大缓冲区命中率,则将所述期望缓冲区命中率作为所述目标租户预设的第一预设缓冲区命中率,并根据所述未来缓冲区命中率与所述期望缓冲区命中率的差值以及预设的缓冲区容量,按照第一预设算法计算出第一容量,并按照所述第一容量从所述目标租户对应的目标缓冲区中释放数据页。
需要说明的是,本发明实施例所描述的服务器40中各功能单元的功能可根据上述图2所示方法实施例中的方法具体实现,此处不再赘述。
请参见图7,是本发明实施例提供的另一种服务器的结构示意图。其中,图7所示的服务器40是由图4所示的服务器40进行优化得到的。与图4相比,图7所示的服务器40同样包括预测单元401、比较单元403、第一管理单元405和第二管理单元407,且第二管理单元407具体包括:第三判断单元4071和第三计算单元4073,其中,
第三判断单元4071,用于若所述比较单元403比较出所述未来缓冲区命中率小于所述期望缓冲区命中率,则判断所述未来缓冲区命中率是否小于所述目标租户预设的最小缓冲区命中率,所述最小缓冲区命中率小于所述期望缓冲区命中率;
第三计算单元4073,用于若所述第三判断单元4071判断出所述未来缓冲区命中率小于所述目标租户预设的最小缓冲区命中率,则将所述最小缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述最小缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量,并按照所述第二容量为所述目标缓冲区添加数据页。
需要说明的是,本发明实施例所描述的服务器40中各功能单元的功能可根据上述图2所示方法实施例中的方法具体实现,此处不再赘述。
请参见图8,是本发明实施例提供的另一种服务器的结构示意图。其中,图8所示的服务器40是由图4所示的服务器40进行优化得到的。与图4相比,图8所示的服务器40同样包括预测单元401、比较单元403、第一管理单元405和第二管理单元407,且第二管理单元407具体包括:第四判断单元4075和第四计算单元4077,其中,
第四判断单元4075,用于若所述比较单元403比较出所述未来缓冲区命中率小于所述期望缓冲区命中率,则判断所述未来缓冲区命中率是否小于所述目标租户预设的最小缓冲区命中率,所述最小缓冲区命中率小于所述期望缓冲区命中率;
第四计算单元4077,用于若所述第四判断单元4075判断出所述未来缓冲区命中率大于或等于所述目标租户预设的最小缓冲区命中率,则将所述期望缓冲区命中率作为所述目标租户预设的第二预设缓冲区命中率,并根据所述期望缓冲区命中率与所述未来缓冲区命中率的差值以及预设的缓冲区容量,按照第二预设算法计算出第二容量,并按照所述第二容量为所述目标缓冲区添加数据页。
可选的,上述第一管理单元405还可以同时包括第一判断单元4051、第一计算单元4053、第二判断单元4055和第二计算单元4057,各个单元的具体实现可以参照以上方案中相同单元的描述,此处不再赘述。
可选的,上述第二管理单元407还可以同时包括第三判断单元4071、第三计算单元4073、第四判断单元4075和第四计算单元4077,各个单元的具体实现可以参照以上方案中相同单元的描述,此处不再赘述。
需要说明的是,本发明实施例所描述的服务器40中各功能单元的功能可根据上述图2所示方法实施例中的方法具体实现,此处不再赘述。
综上所述,实施本发明实施例,根据预测得到的多租户中的目标租户的未来缓冲区命中率以及所述目标租户预设的缓冲区命中率,来动态调整多租户中的目标租户对应的目标缓冲区的容量,既可以避免因缓冲区不足而影响租户的访问性能,又可以避免因缓冲区过大而造成资源浪费。
进一步的,将从所述目标租户对应的目标缓冲区释放出的数据页供给多租户中其他需要添加数据页的租户使用,可以提高多租户的整体性能和缓冲区的资源利用率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存取存储器等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。