mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-03 23:20:26 +08:00
优化数据库相关代码
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -77,18 +77,27 @@ func (this *ServerAccessLogCleaner) Loop() error {
|
||||
return err
|
||||
}
|
||||
for _, node := range nodes {
|
||||
dbConfig := node.DBConfig()
|
||||
db, err := dbs.NewInstanceFromConfig(dbConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = this.cleanDB(db, endDay)
|
||||
if err != nil {
|
||||
_ = db.Close()
|
||||
return err
|
||||
}
|
||||
err := func(node *models.DBNode) error {
|
||||
var dbConfig = node.DBConfig()
|
||||
nodeDB, err := dbs.NewInstanceFromConfig(dbConfig)
|
||||
if err != nil {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user