优化数据库相关代码

This commit is contained in:
刘祥超
2022-04-08 14:15:45 +08:00
parent fe448e6556
commit c03d9f1880
10 changed files with 99 additions and 16 deletions

View File

@@ -3,6 +3,7 @@ package db
import (
"database/sql"
"database/sql/driver"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
_ "github.com/go-sql-driver/mysql"
"github.com/iwind/TeaGo/Tea"
_ "github.com/iwind/TeaGo/bootstrap"
@@ -42,3 +43,13 @@ func TestDB_Instance(t *testing.T) {
}
time.Sleep(100 * time.Second)
}
func TestDB_Reuse(t *testing.T) {
var dao = models.NewVersionDAO()
for i := 0; i < 20_000; i++ {
_, _, err := dao.Query(nil).Attr("version", i).Reuse(true).FindOne()
if err != nil {
t.Fatal(err)
}
}
}

View File

@@ -237,7 +237,7 @@ func (this *DBNodeInitializer) loop() error {
}
if db == nil {
config := &dbs.DBConfig{
var config = &dbs.DBConfig{
Driver: "mysql",
Dsn: dsn,
Prefix: "edge",

View File

@@ -30,6 +30,9 @@ func TestNewHTTPAccessLogManager(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
var manager = models.SharedHTTPAccessLogManager
err = manager.CreateTable(db, "accessLog_1")
@@ -58,6 +61,9 @@ func TestHTTPAccessLogManager_FindTableNames(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
for i := 0; i < 3; i++ {
var before = time.Now()
@@ -74,7 +80,6 @@ func TestHTTPAccessLogManager_FindTableNames(t *testing.T) {
}
}
func TestHTTPAccessLogManager_FindTables(t *testing.T) {
var config = &dbs.DBConfig{
Driver: "mysql",
@@ -95,6 +100,9 @@ func TestHTTPAccessLogManager_FindTables(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
for i := 0; i < 3; i++ {
var before = time.Now()
@@ -131,6 +139,9 @@ func TestHTTPAccessLogManager_FindTable(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
for i := 0; i < 3; i++ {
var before = time.Now()

View File

@@ -3,11 +3,8 @@ package dbutils
import (
"github.com/iwind/TeaGo/dbs"
"strings"
"sync"
)
var SharedCacheLocker = sync.RWMutex{}
// NewQuery 构造Query
func NewQuery(tx *dbs.Tx, dao dbs.DAOWrapper, adminId int64, userId int64) *dbs.Query {
query := dao.Object().Query(tx)

View File

@@ -284,6 +284,9 @@ func (this *APINode) autoUpgrade() error {
if err != nil {
return errors.New("load database failed: " + err.Error())
}
defer func() {
_ = db.Close()
}()
one, err := db.FindOne("SELECT version FROM edgeVersions LIMIT 1")
if err != nil {
return errors.New("query version failed: " + err.Error())

View File

@@ -12,6 +12,12 @@ func TestSQLDump_Dump(t *testing.T) {
Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge?charset=utf8mb4&timeout=30s",
Prefix: "edge",
})
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
dump := NewSQLDump()
result, err := dump.Dump(db)
@@ -49,6 +55,12 @@ func TestSQLDump_Apply(t *testing.T) {
Dsn: "root:123456@tcp(127.0.0.1:3306)/db_edge?charset=utf8mb4&timeout=30s",
Prefix: "edge",
})
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
dump := NewSQLDump()
result, err := dump.Dump(db)
@@ -64,6 +76,9 @@ func TestSQLDump_Apply(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db2.Close()
}()
ops, err := dump.Apply(db2, result, false)
if err != nil {
t.Fatal(err)

View File

@@ -52,6 +52,10 @@ func (this *SQLExecutor) Run(showLog bool) error {
return err
}
defer func() {
_ = db.Close()
}()
sqlDump := NewSQLDump()
_, err = sqlDump.Apply(db, LatestSQLResult, showLog)
if err != nil {

View File

@@ -28,6 +28,9 @@ func TestSQLExecutor_checkCluster(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = executor.checkCluster(db)
if err != nil {
@@ -46,6 +49,9 @@ func TestSQLExecutor_checkMetricItems(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = executor.checkMetricItems(db)
if err != nil {
@@ -64,6 +70,9 @@ func TestSQLExecutor_checkNS(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = executor.checkNS(db)
if err != nil {

View File

@@ -14,6 +14,9 @@ func TestUpgradeSQLData(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = UpgradeSQLData(db)
if err != nil {
t.Fatal(err)
@@ -30,6 +33,9 @@ func TestUpgradeSQLData_v0_3_1(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = upgradeV0_3_1(db)
if err != nil {
t.Fatal(err)
@@ -46,6 +52,9 @@ func TestUpgradeSQLData_v0_3_2(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = upgradeV0_3_2(db)
if err != nil {
t.Fatal(err)
@@ -62,6 +71,9 @@ func TestUpgradeSQLData_v0_3_3(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = upgradeV0_3_3(db)
if err != nil {
t.Fatal(err)
@@ -78,6 +90,9 @@ func TestUpgradeSQLData_v0_3_7(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = upgradeV0_3_7(db)
if err != nil {
t.Fatal(err)
@@ -94,6 +109,9 @@ func TestUpgradeSQLData_v0_4_0(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = upgradeV0_4_0(db)
if err != nil {
t.Fatal(err)
@@ -110,6 +128,9 @@ func TestUpgradeSQLData_v0_4_1(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = upgradeV0_4_1(db)
if err != nil {
t.Fatal(err)
@@ -127,6 +148,9 @@ func TestUpgradeSQLData_v0_4_5(t *testing.T) {
if err != nil {
t.Fatal(err)
}
defer func() {
_ = db.Close()
}()
err = upgradeV0_4_5(db)
if err != nil {
t.Fatal(err)

View File

@@ -77,18 +77,27 @@ func (this *ServerAccessLogCleaner) Loop() error {
return err
}
for _, node := range nodes {
dbConfig := node.DBConfig()
db, err := dbs.NewInstanceFromConfig(dbConfig)
err := func(node *models.DBNode) error {
var dbConfig = node.DBConfig()
nodeDB, err := dbs.NewInstanceFromConfig(dbConfig)
if err != nil {
return err
}
err = this.cleanDB(db, endDay)
if err != nil {
_ = db.Close()
return err
}
_ = db.Close()
defer func() {
_ = nodeDB.Close()
}()
err = this.cleanDB(nodeDB, endDay)
if err != nil {
return err
}
return nil
}(node)
if err != nil {
return err
}
}
return nil