1. 程式人生 > 其它 >go使用連線池連線clickhouse

go使用連線池連線clickhouse

package main

import (
    "database/sql"
    "fmt"
    "time"

    _ "github.com/ClickHouse/clickhouse-go"
)

// 連線池的最大數量
const maxConnections = 10

func connect() (*sql.DB, error) {
    // 建立連線池
    pool, err := sql.Open("clickhouse", "tcp://127.0.0.1:9000?debug=true")
    if err != nil {
        return nil, err
    }

    
// 設定連線池的最大連線數 pool.SetMaxOpenConns(maxConnections) // 設定連線池中最多可以有多少空閒連線 pool.SetMaxIdleConns(maxConnections / 2) // 設定連線的最大空閒時間 pool.SetConnMaxLifetime(time.Minute * 5) // 測試連線是否可用 if err = pool.Ping(); err != nil { return nil, err } return pool, nil } func main() { db, err :
= connect() if err != nil { panic(err) } defer db.Close() // 構造插入語句 stmt := ` INSERT INTO mytable (id, name, age) VALUES ` for i := 0; i < 1000; i++ { stmt += fmt.Sprintf("(%d, 'Name%d', %d),", i, i, i%100) } stmt = stmt[:len(stmt)-1] // 執行插入語句
result, err := db.Exec(stmt) if err != nil { panic(err) } // 輸出插入結果 fmt.Println(result.RowsAffected()) }