package main import ( "fmt" "git.sxidc.com/go-tools/utils/strutils" "git.sxidc.com/service-supports/ds-sdk/sdk" "math/rand" "sync" "time" ) const ( token = "IpTTwAQweh/BP51fz5CzWKQFaXHvZe6ewvk6yOcAOkU=" address = "localhost" httpPort = "10000" grpcPort = "10001" namespace = "ns-sdk-demo" dataSource = "ds-sdk-demo" deleteSql = "delete-sdk-demo" goRoutineCount = 100 ) const ( sqlInsertTpl = "INSERT INTO test.classes (id, name, student_num) VALUES ('[[ .id ]]', '[[ .name ]]', [[ .student_num ]])" ) var ( sqlSpec = sdk.SqlSpec{ Transaction: false, Clauses: "- DELETE FROM test.classes WHERE id = '{{ .id }}'", } ) func main() { classID := strutils.SimpleUUID() className := strutils.SimpleUUID() studentNum := rand.Int31n(100) insertExecuteParams := map[string]any{ "id": classID, "name": className, "student_num": studentNum, } deleteExecuteParams := map[string]any{ "id": classID, } err := sdk.InitInstance(token, address, httpPort, grpcPort, namespace, dataSource) if err != nil { panic(err) } defer func() { err := sdk.DestroyInstance() if err != nil { panic(err) } }() err = sdk.GetInstance().CreateSQL(deleteSql, sqlSpec.ToMap()) if err != nil { panic(err) } _, err = sdk.GetInstance().ExecuteRawSql(sqlInsertTpl, insertExecuteParams) if err != nil { panic(err) } _, err = sdk.GetInstance().ExecuteSql(deleteSql, deleteExecuteParams) if err != nil { panic(err) } wg := sync.WaitGroup{} wg.Add(goRoutineCount) start := time.Now() for i := 0; i < goRoutineCount; i++ { go func() { defer wg.Done() err = sdk.GetInstance().Transaction(func(tx *sdk.Transaction) error { err := tx.ExecuteRawSql(sqlInsertTpl, insertExecuteParams) if err != nil { return err } err = tx.ExecuteSql(deleteSql, deleteExecuteParams) if err != nil { return err } return nil }) if err != nil { panic(err) } }() } wg.Wait() end := time.Now() fmt.Println(end.Sub(start).Milliseconds()) }