官方对mysql使用标准三步走:
sql="insert into users(age) values(?)";
正常的操作是
stmt = db.Prepare(sql)
stmt.Exec(...)
stmt.Close
prepare的时候会先从连接池里取一个连接,然后根据sql语句 创建一个stmt。但是对于同一种数据频繁数据的场景来说,一次prepare就可以了,没必要每次都重写创建一次stmt。
因此在mysqlConn的时候维护一个cache,以sql语句为key,对应的stmt为value。
同一个sql语句直接返回stmt。
当DB.Close的时候,会调用每次mysqlConn的Close,此时遍历cache释放stmt(stmt.Close()) ,释放cache。
具体操作看我github提交的源码。
我一开始只是没明白需求点而已。
既然能满足你的需求,就是好库。
至于是否已经有现成的库,其实这部重要。
用库么,要么用最通用的,要么用自己写的。
既然你自己的需求已经到自己需要自己写的程度,其实大概率自己的写更好。
#7
更多评论