摘要:
我的服务器数据库内存还有4个G,里面有8个G的表,现在,我要让我的客户机远程连接服务器后对数据库进行一次全表扫描,请问,我的服务器会不会因为内存被8个G的表塞得溢出而崩溃?
面试关如实问到
在我阅读这篇文章后,我会这么跟面试官说:
第一,内存不会打满,除非socket send buffer设置超过4G才有可能
第二,之所以不会,是因为mysql采用一边帮你查询,一边帮你把查询数据发给客户端的模式
但如果客户端接受查询数据特别慢,那数据就会滞留在服务器上,直到达到滞留上限(上限就是socket send buffer的值),这会极大影响服务器性能
你怎么确定服务端的数据是否滞留呢?
面试官问:
答案
show processlist;
可以查看线程状态,如果处于:“sending to client”,那就说明服务端处于滞留状态 阅读全文