的数据库操作特点,预先设置的所述第一限流类型可以不同于本实施例中的设置,同样可以实现本申请的技术方案,也在本申请的保护范围之内。
[0103]步骤102-3:判断MySQL数据库的threads_running变量的值是否小于预先设置的第一阈值,若是,执行步骤103,否则,执行步骤104。
[0104]执行到本步骤,说明所述数据库操作请求属于可以被限流的操作类型,因此本步骤通过判断threads_running变量的值来决定是否限流,如果threads_running的值小于预先设置的第一阈值,说明MySQL数据库当前的负载压力还在其处理能力范围内,因此不需限流,执行步骤103,否则转到步骤104结束对所述数据库操作请求的处理。
[0105]上面描述了根据threads_running的数值决定是否需要进行限流的判断过程,该过程相当于为threads^unning变量设置了一个硬上限,当活动线程数目超过该上限时,所述数据库操作请求将不被处理(参见后续步骤104),从而使threads_running的数值能够基本维持在可控的范围之内。
[0106]在具体实施过程中,为了取得更好的限流效果,本实施例还提供了一种优选实施方式,即:采用两级限流措施,在上述限流方案的基础上采用FIFO队列进一步进行限流,从而可以有效保证MySQL数据库的可用性。为了将两种限流方式相区分,将上述根据threads_running进行限流的方式称为高水位限流,而将下面描述的利用FIFO队列实现限流的方式称为低水位限流。也就是说,在高水位限流没有限制所述数据库操作请求的情况下,可以不直接转到步骤103执行,而是通过低水位限流进行必要的排队等待处理,从而可以提