注意:
1.数据库连接受限于操作系统的的文件描述符(file Descriptor ,fd) ,源于tcp连接
2.单个进程默认1024个fd,可适当调整,但是会消耗性能,有降低应用吞吐率的风险。
3.一般可以把连接池的最大连接数设置在30-50左右。一味的加大连接数是治标不治本的做法,通常是因为出现的很慢的SQL,需要创建索引以及优化SQL语句,优化数据模型或应用逻辑的设计。 尽量避免秒级的SQL,保持在100ms内。
常见优化方案
1.建立高效合适的索引
2.排查连接资源是否显式关闭(特别注意流式计算或Threadlocal中使用数据库连接的地方)
3.合并短的请求
4.合理拆分多个表join的SQL,尽量避免超过3个表的join,会产生巨量的笛卡尔积,另外确保关联的字段有索引。
5.临时表的使用
6.应用层优化。数据结构,逻辑的调整,并发多线程的改造等
7.考虑使用其他数据库。不同的业务场景需要可能会产生数据量不在一个量级上,为了满足性能问题,可以考虑使用nosql。