作者 yangfu

chore: disable transaction

@@ -541,3 +541,18 @@ extractMethod: 提取方法(1.by-date:按日期 2.by-number:按数值) @@ -541,3 +541,18 @@ extractMethod: 提取方法(1.by-date:按日期 2.by-number:按数值)
541 ``` 541 ```
542 convertType:转换类型 STRING 数值: INT 小数: FLOAT 日期: DATE 时间: DATETIME 542 convertType:转换类型 STRING 数值: INT 小数: FLOAT 日期: DATE 时间: DATETIME
543 ``` 543 ```
  544 +
  545 +## 优化点
  546 +- [] 0.测试服务、数据库的上限(QPS,TPS)查询瓶颈的接口
  547 +
  548 +- [] 1.模型详情缓存(tables、query_set)
  549 +
  550 +- [] 2.列表搜索缓存 (tables、query_set),减轻数据库压力
  551 +
  552 +```
  553 +更新、删除、重命名
  554 +get list:queryset:cxxx:*
  555 +删除所有匹配的缓存
  556 +
  557 +消息队列更新事件、确保缓存一定移除成功、缓存时间控制
  558 +```
@@ -45,5 +45,7 @@ require ( @@ -45,5 +45,7 @@ require (
45 45
46 replace ( 46 replace (
47 github.com/extrame/xls v0.0.1 => github.com/tiptok/xls v1.0.1 47 github.com/extrame/xls v0.0.1 => github.com/tiptok/xls v1.0.1
48 - github.com/linmadan/egglib-go v0.0.0-20210313060205-8b5e456b11f7 => github.com/tiptok/egglib-go v0.0.0-20220421085958-9682d0ac42c1 48 + //github.com/linmadan/egglib-go v0.0.0-20210313060205-8b5e456b11f7 => github.com/tiptok/egglib-go v0.0.0-20220421085958-9682d0ac42c1
  49 + github.com/linmadan/egglib-go v0.0.0-20210313060205-8b5e456b11f7 => github.com/tiptok/egglib-go v1.0.0
  50 +
49 ) 51 )
@@ -311,12 +311,12 @@ func (querySetService *QuerySetService) SearchQuerySet(ctx *domain.Context, sear @@ -311,12 +311,12 @@ func (querySetService *QuerySetService) SearchQuerySet(ctx *domain.Context, sear
311 if err != nil { 311 if err != nil {
312 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 312 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
313 } 313 }
314 - if err := transactionContext.StartTransaction(); err != nil {  
315 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
316 - }  
317 - defer func() {  
318 - transactionContext.RollbackTransaction()  
319 - }() 314 + //if err := transactionContext.StartTransaction(); err != nil {
  315 + // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  316 + //}
  317 + //defer func() {
  318 + // transactionContext.RollbackTransaction()
  319 + //}()
320 320
321 QuerySetRepository, _, _ := factory.FastPgQuerySet(transactionContext, 0) 321 QuerySetRepository, _, _ := factory.FastPgQuerySet(transactionContext, 0)
322 options := utils.ObjectToMap(searchQuerySetQuery) 322 options := utils.ObjectToMap(searchQuerySetQuery)
@@ -361,9 +361,9 @@ func (querySetService *QuerySetService) SearchQuerySet(ctx *domain.Context, sear @@ -361,9 +361,9 @@ func (querySetService *QuerySetService) SearchQuerySet(ctx *domain.Context, sear
361 361
362 var result = dto.NewQuerySetDtoList(querySets) 362 var result = dto.NewQuerySetDtoList(querySets)
363 363
364 - if err := transactionContext.CommitTransaction(); err != nil {  
365 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
366 - } 364 + //if err := transactionContext.CommitTransaction(); err != nil {
  365 + // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  366 + //}
367 return map[string]interface{}{ 367 return map[string]interface{}{
368 "count": count, 368 "count": count,
369 "querySets": result, 369 "querySets": result,
@@ -19,12 +19,12 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab @@ -19,12 +19,12 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab
19 if err != nil { 19 if err != nil {
20 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 20 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
21 } 21 }
22 - if err := transactionContext.StartTransaction(); err != nil {  
23 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
24 - }  
25 - defer func() {  
26 - transactionContext.RollbackTransaction()  
27 - }() 22 + //if err := transactionContext.StartTransaction(); err != nil {
  23 + // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  24 + //}
  25 + //defer func() {
  26 + // transactionContext.RollbackTransaction()
  27 + //}()
28 28
29 tableRepository, _, _ := factory.FastPgTable(transactionContext, 0) 29 tableRepository, _, _ := factory.FastPgTable(transactionContext, 0)
30 _, tables, err := tableRepository.Find(utils.ObjectToMap(searchQuery)) 30 _, tables, err := tableRepository.Find(utils.ObjectToMap(searchQuery))
@@ -112,9 +112,9 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab @@ -112,9 +112,9 @@ func (tableService *TableService) TableObjectSearch(searchQuery *query.SearchTab
112 groupItem.LoadGroup(querySetGroup) 112 groupItem.LoadGroup(querySetGroup)
113 response = append(response, groupItem) 113 response = append(response, groupItem)
114 } 114 }
115 - if err := transactionContext.CommitTransaction(); err != nil {  
116 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
117 - } 115 + //if err := transactionContext.CommitTransaction(); err != nil {
  116 + // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  117 + //}
118 118
119 sort.Slice(response, func(i, j int) bool { 119 sort.Slice(response, func(i, j int) bool {
120 item1 := response[i] 120 item1 := response[i]
@@ -21,12 +21,12 @@ func (tableService *TableService) TablePreview(ctx *domain.Context, cmd *command @@ -21,12 +21,12 @@ func (tableService *TableService) TablePreview(ctx *domain.Context, cmd *command
21 if err != nil { 21 if err != nil {
22 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 22 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
23 } 23 }
24 - if err := transactionContext.StartTransaction(); err != nil {  
25 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
26 - }  
27 - defer func() {  
28 - transactionContext.RollbackTransaction()  
29 - }() 24 + //if err := transactionContext.StartTransaction(); err != nil {
  25 + // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  26 + //}
  27 + //defer func() {
  28 + // transactionContext.RollbackTransaction()
  29 + //}()
30 var dataTable *domain.DataTable 30 var dataTable *domain.DataTable
31 var table *domain.Table 31 var table *domain.Table
32 var cacheMiss bool 32 var cacheMiss bool
@@ -91,8 +91,8 @@ func (tableService *TableService) TablePreview(ctx *domain.Context, cmd *command @@ -91,8 +91,8 @@ func (tableService *TableService) TablePreview(ctx *domain.Context, cmd *command
91 // 存储缓存 91 // 存储缓存
92 cache.SetDataTable(table.TableId, dataTable) 92 cache.SetDataTable(table.TableId, dataTable)
93 } 93 }
94 - if err := transactionContext.CommitTransaction(); err != nil {  
95 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
96 - } 94 + //if err := transactionContext.CommitTransaction(); err != nil {
  95 + // return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  96 + //}
97 return response, nil 97 return response, nil
98 } 98 }
@@ -142,10 +142,10 @@ func NewFormulaCalculate(table *domain.Table, queryComponent *domain.QueryCompon @@ -142,10 +142,10 @@ func NewFormulaCalculate(table *domain.Table, queryComponent *domain.QueryCompon
142 formula := queryComponent.Formula 142 formula := queryComponent.Formula
143 res.DatabaseTableName = formula.TableFields[0].TableSqlName 143 res.DatabaseTableName = formula.TableFields[0].TableSqlName
144 // TODO:支持常量 144 // TODO:支持常量
145 - //res.DatabaseTableName = ""  
146 - //if len(formula.TableFields) > 0 {  
147 - // res.DatabaseTableName = formula.TableFields[0].TableSqlName  
148 - //} 145 + res.DatabaseTableName = ""
  146 + if len(formula.TableFields) > 0 {
  147 + res.DatabaseTableName = formula.TableFields[0].TableSqlName
  148 + }
149 exprSql := formula.ExprSql 149 exprSql := formula.ExprSql
150 if queryComponent.Formula.MixTableModel() { 150 if queryComponent.Formula.MixTableModel() {
151 exprSql = queryComponent.Formula.Complete() 151 exprSql = queryComponent.Formula.Complete()
@@ -128,7 +128,7 @@ func (repository *QuerySetRepository) Remove(querySet *domain.QuerySet) (*domain @@ -128,7 +128,7 @@ func (repository *QuerySetRepository) Remove(querySet *domain.QuerySet) (*domain
128 return querySet, nil 128 return querySet, nil
129 } 129 }
130 func (repository *QuerySetRepository) FindOne(queryOptions map[string]interface{}) (*domain.QuerySet, error) { 130 func (repository *QuerySetRepository) FindOne(queryOptions map[string]interface{}) (*domain.QuerySet, error) {
131 - tx := repository.transactionContext.PgTx 131 + tx := repository.transactionContext.DB()
132 querySetModel := new(models.QuerySet) 132 querySetModel := new(models.QuerySet)
133 query := sqlbuilder.BuildQuery(tx.Model(querySetModel), queryOptions) 133 query := sqlbuilder.BuildQuery(tx.Model(querySetModel), queryOptions)
134 WhereContext(query, queryOptions) 134 WhereContext(query, queryOptions)
@@ -152,7 +152,7 @@ func (repository *QuerySetRepository) FindOne(queryOptions map[string]interface{ @@ -152,7 +152,7 @@ func (repository *QuerySetRepository) FindOne(queryOptions map[string]interface{
152 } 152 }
153 } 153 }
154 func (repository *QuerySetRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.QuerySet, error) { 154 func (repository *QuerySetRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.QuerySet, error) {
155 - tx := repository.transactionContext.PgTx 155 + tx := repository.transactionContext.DB()
156 var querySetModels []*models.QuerySet 156 var querySetModels []*models.QuerySet
157 querySets := make([]*domain.QuerySet, 0) 157 querySets := make([]*domain.QuerySet, 0)
158 query := sqlbuilder.BuildQuery(tx.Model(&querySetModels), queryOptions) 158 query := sqlbuilder.BuildQuery(tx.Model(&querySetModels), queryOptions)
@@ -133,7 +133,7 @@ func (repository *TableRepository) Remove(table *domain.Table) (*domain.Table, e @@ -133,7 +133,7 @@ func (repository *TableRepository) Remove(table *domain.Table) (*domain.Table, e
133 return table, nil 133 return table, nil
134 } 134 }
135 func (repository *TableRepository) FindOne(queryOptions map[string]interface{}) (*domain.Table, error) { 135 func (repository *TableRepository) FindOne(queryOptions map[string]interface{}) (*domain.Table, error) {
136 - tx := repository.transactionContext.PgTx 136 + tx := repository.transactionContext.DB()
137 tableModel := new(models.Table) 137 tableModel := new(models.Table)
138 query := sqlbuilder.BuildQuery(tx.Model(tableModel), queryOptions) 138 query := sqlbuilder.BuildQuery(tx.Model(tableModel), queryOptions)
139 WhereContext(query, queryOptions) 139 WhereContext(query, queryOptions)
@@ -161,7 +161,7 @@ func (repository *TableRepository) FindOne(queryOptions map[string]interface{}) @@ -161,7 +161,7 @@ func (repository *TableRepository) FindOne(queryOptions map[string]interface{})
161 } 161 }
162 } 162 }
163 func (repository *TableRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.Table, error) { 163 func (repository *TableRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.Table, error) {
164 - tx := repository.transactionContext.PgTx 164 + tx := repository.transactionContext.DB()
165 var tableModels []*models.Table 165 var tableModels []*models.Table
166 tables := make([]*domain.Table, 0) 166 tables := make([]*domain.Table, 0)
167 query := sqlbuilder.BuildQuery(tx.Model(&tableModels), queryOptions) 167 query := sqlbuilder.BuildQuery(tx.Model(&tableModels), queryOptions)
@@ -26,6 +26,7 @@ func init() { @@ -26,6 +26,7 @@ func init() {
26 web.BConfig.Listen.HTTPPort = 8080 26 web.BConfig.Listen.HTTPPort = 8080
27 web.BConfig.Listen.EnableAdmin = false 27 web.BConfig.Listen.EnableAdmin = false
28 web.BConfig.WebConfig.CommentRouterPath = "/pkg/port/beego/routers" 28 web.BConfig.WebConfig.CommentRouterPath = "/pkg/port/beego/routers"
  29 + web.BConfig.Log.AccessLogs = true
29 if os.Getenv("RUN_MODE") != "" { 30 if os.Getenv("RUN_MODE") != "" {
30 web.BConfig.RunMode = os.Getenv("RUN_MODE") 31 web.BConfig.RunMode = os.Getenv("RUN_MODE")
31 } 32 }
@@ -66,7 +67,7 @@ func init() { @@ -66,7 +67,7 @@ func init() {
66 67
67 func CreateRequestLogFilter(console bool) func(ctx *context.Context) { 68 func CreateRequestLogFilter(console bool) func(ctx *context.Context) {
68 return func(ctx *context.Context) { 69 return func(ctx *context.Context) {
69 - msg := fmt.Sprintf("beego | %v | %v \n %v", ctx.Input.Method(), ctx.Input.URL(), string(ctx.Input.RequestBody)) 70 + msg := fmt.Sprintf("beego | %v | %v | %v \n %v", ctx.Input.Method(), strings.Split(ctx.Request.RemoteAddr, ":")[0], ctx.Input.URL(), string(ctx.Input.RequestBody))
70 logs.Debug(msg) 71 logs.Debug(msg)
71 if console { 72 if console {
72 fmt.Println(msg) 73 fmt.Println(msg)
@@ -109,7 +110,7 @@ func RequestCostAfter(maxCost int64) func(ctx *context.Context) { @@ -109,7 +110,7 @@ func RequestCostAfter(maxCost int64) func(ctx *context.Context) {
109 costEnd := time.Now().UnixMilli() 110 costEnd := time.Now().UnixMilli()
110 cost := costEnd - costBegin 111 cost := costEnd - costBegin
111 if cost > 0 && maxCost > 0 && cost > maxCost { 112 if cost > 0 && maxCost > 0 && cost > maxCost {
112 - msg := fmt.Sprintf("beego | %v | %v | 耗时:%v \n %v", ctx.Input.Method(), ctx.Input.URL(), time.Duration(cost)*time.Millisecond, string(ctx.Input.RequestBody)) 113 + msg := fmt.Sprintf("beego | %v | %v | %v | 耗时:%v \n %v", ctx.Input.Method(), strings.Split(ctx.Request.RemoteAddr, ":")[0], ctx.Input.URL(), time.Duration(cost)*time.Millisecond, string(ctx.Input.RequestBody))
113 logs.Warn(msg) 114 logs.Warn(msg)
114 } 115 }
115 } 116 }