限流算法目前程序开发过程常用的限流算法有两个:漏桶算法和令牌桶算法.
漏桶算法
漏桶算法的原理比较简单,请求进入到漏桶中,漏桶以一定的速率漏水.当请求过多时,水直接溢出.可以看出,漏桶算法可以强制限制数据的传输速度.如图所示,把请求比作是水滴,水先滴到桶里,通过漏洞并以限定的速度出水,当水来得过猛而出水不够快时就会导致水直接溢出,即拒绝服务.
图片来自网络
漏桶的出水速度是恒定的,那么意味着如果瞬时大流量的话,将有大部分请求被丢弃掉(也就是所谓的溢出).
令牌桶算法
令牌桶算法的原理是系统以一定速率向桶中放入令牌,如果有请求时,请求会从桶中取出令牌,如果能取到令牌,则可以继续完成请求,否则等待或者拒绝服务.这种算法可以应对突发程度的请求,所以呢比漏桶算法好.
漏桶算法和令牌桶算法的选择
只能在应用层做并发,数据库层不允许并发.设想一下,如果你的主键ID是自动递增的,两条数据同时插入,那么他们的ID岂不是相同了?这岂不与主键的规则冲突?所以sql语句的执行永远都是队列式的,你只能提高sql处理的性能.
mysql的最大连接数默认是100, 这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,所以呢我们需要把它适当调大一些.
调节方法为:
①linux服务器中:改my.cnf中的值就行了
在文件"my.ini"中找到段 ? [mysqld],在其中添加一行 ?
然后重启"mysql"服务.
/mysqladmin所在路径/mysqladmin -uroot -p variables
输入root数据库账号的密码后可看到
| max_connections | 1000 |
其他需注意的:
在编程时,由于用mysql语句调用数据库时,在每次之执行语句前,会做一个临时的变量用来打开数据库,所以你在使用mysql语句的时候,记得在每次调用完mysql之后就关闭mysql临时变量.
方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MYSQL即可
显示当前运行的Query:mysql show processlist
显示当前状态:mysql show status
查看当前最大连接数:mysqladmin -uusername -ppassword variables
使用mysql异步查询,需要使用mysqlnd作为PHP的MySQL数据库驱动. 使用MySQL异步... 如果创建的线程过多,则会造成线程切换引起系统负载过高.Swoole中的异步MySQL其...
以上就是土嘎嘎小编为大家整理的mysql怎么创建并发相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!