go sql
2019-07-18 本文已影响0人
dkzz
连接池
SetMaxOpenConns
SetMaxOpenConns设置数据库的最大打开连接数。
如果MaxIdleConns大于0且新的MaxOpenConns小于MaxIdleConns,则MaxIdleConns将减小以匹配新的MaxOpenConns限制。
如果n <= 0,则打开连接数没有限制。默认值为0(无限制)。
如果最大连接数超过数据库设置,会出现错误
too many connections
存疑????
建议设置为连接数 = ((核心数 * 2) + 有效磁盘数)
mysql 查询 max_connections
SHOW VARIABLES LIKE "max_connections";
SetConnMaxLifetime
SetConnMaxLifetime设置可以重用连接的最大时间。
过期连接可能会在重用之前懒惰关闭。如果d <= 0,则连接将永久重用。
SetMaxIdleConns
SetMaxIdleConns设置空闲连接池中的最大连接数。
如果MaxOpenConns大于0但小于新的MaxIdleConns,则新的MaxIdleConns将减小以匹配MaxOpenConns限制。
如果n <= 0,则不保留空闲连接。
默认的最大空闲连接当前为2.这可能会在将来的版本中发生变化。
查缺补漏
- 防止注入
- 数据库提供prepareStatement方法进行参数预编译,根本上防止sql拼接注入
- 许多orm也提供了字符过滤功能,对引号进行转义
- xorm 的 EngineGroup 支持读写分离 ,无需 mysql route、mycat、atlas