补充财务查询索引和慢 SQL 日志

This commit is contained in:
yml2213
2026-06-10 15:43:36 +08:00
parent 28c4efc669
commit 0fbe30b377
3 changed files with 45 additions and 3 deletions
+1 -1
View File
@@ -47,7 +47,7 @@ func main() {
}()
var deps router.Dependencies
db, err := database.OpenMySQL(cfg.MySQLDSN)
db, err := database.OpenMySQL(cfg.MySQLDSN, cfg.Log.Level)
if err != nil {
logger.Warn("mysql unavailable; database-backed APIs will return 503", zap.Error(err))
} else {
+24 -2
View File
@@ -1,14 +1,20 @@
package database
import (
"log"
"os"
"strings"
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
func OpenMySQL(dsn string) (*gorm.DB, error) {
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
func OpenMySQL(dsn string, logLevel string) (*gorm.DB, error) {
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: newGormLogger(logLevel),
})
if err != nil {
return nil, err
}
@@ -25,3 +31,19 @@ func OpenMySQL(dsn string) (*gorm.DB, error) {
return db, nil
}
func newGormLogger(logLevel string) logger.Interface {
level := logger.Warn
if strings.EqualFold(strings.TrimSpace(logLevel), "debug") {
level = logger.Info
}
return logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags),
logger.Config{
SlowThreshold: 500 * time.Millisecond,
LogLevel: level,
IgnoreRecordNotFoundError: true,
Colorful: false,
},
)
}
@@ -0,0 +1,20 @@
-- 为后台财务汇总、明细查询和退款统计补充复合索引。
-- 该迁移按版本只执行一次;若手工执行,请先确认索引不存在。
ALTER TABLE rental_orders
ADD INDEX idx_rental_orders_settled_at_id (settled_at, id);
ALTER TABLE rental_orders
ADD INDEX idx_rental_orders_created_at_id (created_at, id);
ALTER TABLE order_checkouts
ADD INDEX idx_order_checkouts_status_order_id_id (status, order_id, id);
ALTER TABLE payment_orders
ADD INDEX idx_payment_orders_order_biz_status (order_id, biz_type, status);
ALTER TABLE payment_orders
ADD INDEX idx_payment_orders_created_biz_status (created_at, biz_type, status);
ALTER TABLE wallet_ledger
ADD INDEX idx_wallet_ledger_order_direction_biz (order_id, direction, biz_type);