为了账号安全,请及时绑定邮箱和手机立即绑定

请问一下mysql数据库怎么解决高并发问题?

请问一下mysql数据库怎么解决高并发问题?

慕田峪4524236 2019-10-21 17:14:46
mysql数据库怎么解决高并发问题
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

通常情况下在PHP中MySQL查询是串行的,如果能实现MySQL查询的异步化,就能实现多条SQL语句同时执行,这样就能大大地缩短MySQL查询的耗时,提高数据库查询的效率。目前MySQL的异步查询只在MySQLi扩展提供,查询方法分别是:
1、使用MYSQLI_ASYNC模式执行mysqli::query
2、获取异步查询结果:mysqli::reap_async_query
使用mysql异步查询,需要使用mysqlnd作为PHP的MySQL数据库驱动。
使用MySQL异步查询,因为需要给所有查询都创建一个新的连接,而MySQL服务端会为每个连接创建一个单独的线程进行处理,如果创建的线程过多,则会造成线程切换引起系统负载过高。Swoole中的异步MySQL其原理是通过MYSQLI_ASYNC模式查询,然后获取mysql连接的socket,加入到epoll事件循环中,当数据库返回结果时会回调指定函数,这个过程是完全异步非阻塞的。

查看完整回答
反对 回复 2019-10-26
?
莫回无

TA贡献1865条经验 获得超7个赞

mysql的最大连接数默认是100, 这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些。

调节方法为:

1.linux服务器中:改my.cnf中的值就行了

2.Windows服务器中(我用的):
在文件“my.ini”中找到段 [mysqld],在其中添加一行
max_connections=200 ### 200可以更改为想设置成的值.
然后重启"mysql"服务。

/mysqladmin所在路径/mysqladmin -uroot -p variables
输入root数据库账号的密码后可看到
| max_connections | 1000 |

其他需注意的:

在编程时,由于用mysql语句调用数据库时,在每次之执行语句前,会做一个临时的变量用来打开数据库,所以你在使用mysql语句的时候,记得在每次调用完mysql之后就关闭mysql临时变量。

另外对于访问量大的,可以考虑直接写到文本中,根据预测的访问量,先定义假若是100个文件文件名依次为1.txt,2.txt...100.txt。需要的时候,再对所有文本文件中的数据进行分析,再导入数据库。

查看完整回答
反对 回复 2019-10-26
  • 3 回答
  • 0 关注
  • 1129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信