MySQL面试题

explain执行计划中type列中有几个类型及含义?

依次从最优到最差分别为:system>const>eq_ref>ref>range>index>ALL,一般来说,得保证查询达到range级别,最好到达ref。

const用于 primary key 或 unique key 的所有列与常数比较时,所以表最多有一个匹配行,读取1次,速度比较快

system:systemconst的特例,表里只有一条元组匹配时为 system

eq_refprimary key 或 unique key 索引的所有部分被连接使用 ,最多只会返回一条符合条件的记录。这可能是在 const 之外最好的联接类型了,简单的 select 查询不会出现这种 type。

ref:相比 eq_ref,不使用唯一索引,而是使用普通索引或者唯一性索引的部分前缀,索引要和某个值相比较,可能会找到多个符合条件的行

range:范围扫描通常出现在 in(), between ,> ,= 等操作中。使用一个索引来检索给定范围的行

index扫描全表索引,这通常比ALL快一些。

ALL即全表扫描 ,意味着mysql需要从头到尾去查找所需要的行。通常情况下这需要增加索 引来进行优化了

连接池怎么设置?

1、如何设置连接池大小 
一个请求的耗时为5ms ,每个连接1秒能处理的请求数量是200个,如果需要支持2000并发,那么理论上的连接数为10个。 

minIdle:最小连接数 统计 QPS 和 请求响应时间的平均值,以此计算 minIdle,并设置 initialSize = minIdle。 
推荐配置:5 maxActive :最大连接池数量,允许的最大同时使用中的连接数。 
统计峰值时的 QPS 和此时的请求响应时间,以此计算 maxActive。实际需要比计算值略大一些。 

配置 maxActive 千万不要好大喜多,虽然配置大了看起来业务流量飙升后还能处理更多的请求,但切换到DB视角会发现其实连接数的增多在很多场景下反而会减低吞吐量,一个非常典型的例子就秒杀,在更新热点数据时DB 需要加锁操作,这个时候再让更多的连接操作DB 就有点像假日往高速上涌入的车辆,只会给DB添堵。 
推荐配置:20,多数场景下 20 已完全够用,当然这个参数跟使用场景相关性很大,一般配置成正常连接数的3~5倍。 

maxWait:从连接池获取连接的超时等待时间,单位毫秒。 需要注意这个参数只管理获取连接的超时。获取连接等待的直接原因是池子里没有可用连接,具体包括:连接池未初始化,连接长久未使 用已被释放,连接使用中需要新建连接,或连接池已耗尽需等待连接用完后归还。这里有一个很关键的点是 maxWait 未配置或者配置为 0 时,表示不设等待超时时间。如果不配置maxWait,当突发大流量涌入时,造成连接池耗尽,所有新增的DB请求处于等待获取连接的状 态中,在请求速度大于处理速度的情况下等待队列会越排越长,最终业务上的表现就是业务接口大量超时,流量越大造成实际吞吐量反而越低。 

推荐配置:内网(网络状况好)800;网络状况不是特别好的情况下推荐大于等于 1200

...............待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小强同志

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值