db, err := sql.Open("pgx", connectionString)
它不代表一个数据库连接；它仅代表一个数据库实体，不管它是通过 TCP 连接的，还是本地文件亦或放在内存中。它的职责是：
实际的连接会 lazily 发生在有查询等操作时。
Handle concurrency well. Users shouldn’t need to care about the database’s per-connection thread safety issues (or lack thereof), and shouldn’t have to maintain their own free pools of connections. The ‘sql’ package should deal with that bookkeeping as needed. Given an
*sql.DB, it should be possible to share that instance between multiple goroutines, without any extra synchronization.
Close() 的。它屏蔽了底层连接管理，使得用户不用去自己维护连接池；并且可以在不同的 go routine 间共享，而不需要使用额外的同步机制。
DB 的 接口文档 提到：
DBis a database handle representing a pool of zero or more underlying connections. It’s safe for concurrent use by multiple goroutines.
The sql package creates and frees connections automatically; it also maintains a free pool of idle connections. If the database has a concept of per-connection state, such state can be reliably observed within a transaction (Tx) or connection (Conn). Once
DB.Beginis called, the returned Tx is bound to a single connection. Once
Rollbackis called on the transaction, that transaction’s connection is returned to DB’s idle connection pool. The pool size can be controlled with