|
|
@@ -1,20 +1,23 @@
|
|
|
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"
|
|
|
- dataContainer = "dc-sdk-demo"
|
|
|
- deleteSql = "delete-sdk-demo"
|
|
|
+ token = "IpTTwAQweh/BP51fz5CzWKQFaXHvZe6ewvk6yOcAOkU="
|
|
|
+ address = "localhost"
|
|
|
+ httpPort = "10000"
|
|
|
+ grpcPort = "10001"
|
|
|
+ namespace = "ns-sdk-demo"
|
|
|
+ dataSource = "ds-sdk-demo"
|
|
|
+ deleteSql = "delete-sdk-demo"
|
|
|
+ goRoutineCount = 100
|
|
|
)
|
|
|
|
|
|
const (
|
|
|
@@ -22,30 +25,6 @@ const (
|
|
|
)
|
|
|
|
|
|
var (
|
|
|
- dataContainerSpec = sdk.DataContainerDatabaseSpec{
|
|
|
- TableName: "test.classes",
|
|
|
- Columns: []sdk.DataContainerDatabaseColumnSpec{
|
|
|
- {
|
|
|
- Name: "id",
|
|
|
- Type: "varchar(32)",
|
|
|
- Comment: "id",
|
|
|
- PrimaryKey: true,
|
|
|
- },
|
|
|
- {
|
|
|
- Name: "name",
|
|
|
- Type: "varchar(128)",
|
|
|
- Comment: "班名",
|
|
|
- NotNull: true,
|
|
|
- },
|
|
|
- {
|
|
|
- Name: "student_num",
|
|
|
- Type: "integer",
|
|
|
- Comment: "学生数量",
|
|
|
- Default: 60,
|
|
|
- },
|
|
|
- },
|
|
|
- }
|
|
|
-
|
|
|
sqlSpec = sdk.SqlSpec{
|
|
|
Transaction: false,
|
|
|
Clauses: "- DELETE FROM test.classes WHERE id = '{{ .id }}'",
|
|
|
@@ -79,11 +58,6 @@ func main() {
|
|
|
}
|
|
|
}()
|
|
|
|
|
|
- err = sdk.GetInstance().CreateDataContainer(dataContainer, dataContainerSpec.ToMap())
|
|
|
- if err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
-
|
|
|
err = sdk.GetInstance().CreateSQL(deleteSql, sqlSpec.ToMap())
|
|
|
if err != nil {
|
|
|
panic(err)
|
|
|
@@ -99,25 +73,37 @@ func main() {
|
|
|
panic(err)
|
|
|
}
|
|
|
|
|
|
- err = sdk.GetInstance().Transaction(func(tx *sdk.Transaction) error {
|
|
|
- err := tx.ExecuteRawSql(sqlInsertTpl, insertExecuteParams)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+ wg := sync.WaitGroup{}
|
|
|
+ wg.Add(goRoutineCount)
|
|
|
|
|
|
- err = tx.ExecuteSql(deleteSql, deleteExecuteParams)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+ start := time.Now()
|
|
|
|
|
|
- return nil
|
|
|
- })
|
|
|
- if err != nil {
|
|
|
- panic(err)
|
|
|
- }
|
|
|
+ for i := 0; i < goRoutineCount; i++ {
|
|
|
+ go func() {
|
|
|
+ defer wg.Done()
|
|
|
|
|
|
- err = sdk.GetInstance().DeleteDataContainer(dataContainer)
|
|
|
- if err != nil {
|
|
|
- panic(err)
|
|
|
+ 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())
|
|
|
}
|