客户端读的速率慢,会导致服务端写满,拥塞。 这个过程对应的流程图如下所示。
MySQL 客户端发送请求后,接收服务端返回结果的方式有两种: 在第 30 篇文章评论区,有同学说到本身因为执行了一个大查询导致客户端占用内存近 20G,这种情况下就需要改用 mysql_use_result 接口了。
MySQL 客户端默认接纳第一种方式,而假如加上–quick 参数,就会使用第二种不缓存的方式。
- 一种是本地缓存,也就是在本地开一片内存,先把结果存起来。假如你用 API 开发,对应的就是 mysql_store_result 方法。
- 另一种是不缓存,读一个处理一个。假如你用 API 开发,对应的就是 mysql_use_result 方法。
sending data并不一定值”正在发送数据“,有可能处于执行器过程中的任意阶段。 实际上,一个查询语句的状态变化是如许的(留意:这里,我略去了其他无关的状态):
写磁盘中的redolog是次序写,根据WAL策略,会先把redolog举行落盘处理,之后再根据“符合情况下”把buffer pool内里的数据脏页刷回磁盘(随机写) 内存的数据页是在 Buffer Pool (BP) 中管理的,在 WAL 里 Buffer Pool 起到了加速更新的作用。而实际上,Buffer Pool 另有一个更重要的作用,就是加速查询。
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |