补充财务查询索引和慢 SQL 日志
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
Reference in New Issue
Block a user