private List <TransactionExecutor> MockFillYCSBWorkload(int offset = 0, int limit = -1) { int appendCount = limit == -1 ? this.executorCount : limit; List <TransactionExecutor> executors = new List <TransactionExecutor>(); IDataGenerator generator = this.BuildDataGenerator(); var workloadAction = this.BuildWorkloadAction(generator); StoredProcedureWorkload.Reload = workloadAction; StoredProcedureType spType = this.GetStoredProcedureType(config.Type); for (int i = offset; i < offset + appendCount; i++) { Queue <TransactionRequest> reqQueue = new Queue <TransactionRequest>(); StoredProcedureWorkload workload = GetStoredProcedureWorkload(config.Type, config.QueryCount); this.totalTasks += this.txCountPerExecutor; int partition_index = i % this.versionDb.PartitionCount; int txRangeStart = i; if (config.MultiProcessMode) { txRangeStart = i + config.ProcessOffset * RANGE_OFFSET_PER_PROCESS; } executors.Add(new TransactionExecutor(this.versionDb, null, reqQueue, partition_index, txRangeStart, 0, null, tables, null, null, this.recordCount, this.txCountPerExecutor, null, workload, spType, config.PipelineSize)); Console.WriteLine("Filled {0}-th executors", i + 1); } return(executors); }
private List <TransactionExecutor> fillYCSBWorkLoad() { List <TransactionExecutor> executorList = new List <TransactionExecutor>(); IDataGenerator generator = this.BuildDataGenerator(); var workloadAction = this.BuildWorkloadAction(generator); StoredProcedureWorkload.Reload = workloadAction; StoredProcedureType type = this.GetStoredProcedureType(config.Type); this.totalTasks = this.txCountPerExecutor * executorCount; for (int i = 0; i < executorCount; i++) { int partition_index = i % this.versionDb.PartitionCount; Queue <TransactionRequest> requestQueue = new Queue <TransactionRequest>(); for (int j = 0; j < this.txCountPerExecutor; j++) { StoredProcedureWorkload workload = GetStoredProcedureWorkload(config.Type, config.QueryCount); StoredProcedureWorkload.Reload(workload); string sessionId = (i * this.txCountPerExecutor + j + 1).ToString(); TransactionRequest request = new TransactionRequest(sessionId, workload, StoredProcedureType.YCSBStordProcedure); requestQueue.Enqueue(request); } executorList.Add(new TransactionExecutor(this.versionDb, null, requestQueue, partition_index, i, 0, null, tables, null, null, this.recordCount, this.txCountPerExecutor, null, null, type, config.PipelineSize)); } return(executorList); }
public TransactionRequest( string sessionId, StoredProcedureWorkload workload, StoredProcedureType type) { this.SessionId = sessionId; this.Workload = workload; this.OperationType = OperationType.Open; this.IsStoredProcedure = true; this.ProcedureType = type; }
private StoredProcedure CreateStoredProcedure(String name, StoredProcedureType storedProcedureType, String query, Table table) { var sp = new StoredProcedure(); sp.DatabaseServer = this.DatabaseSchemaReader.DatabaseServer; sp.Name = name; sp.CreateTime = DateTime.Now; sp.LastAlteredTime = sp.CreateTime; sp.Body = query; sp.TableName = table.Name; sp.StoredProcedureType = storedProcedureType; if (storedProcedureType == StoredProcedureType.Insert || storedProcedureType == StoredProcedureType.Update) { foreach (var c in table.GetColumns(null, true)) { var p = new SqlInputParameter("@" + c.Name, c); if (c.IsServerAutomaticallyInsertValueColumn() == true) { p.ParameterDirection = ParameterDirection.InputOutput; } sp.Parameters.Add(p); } } if (storedProcedureType == StoredProcedureType.SelectByPrimaryKey || storedProcedureType == StoredProcedureType.Update || storedProcedureType == StoredProcedureType.Delete) { foreach (var c in table.GetPrimaryKeyOrTimestampColumns()) { if (c.DbType.IsTimestamp() == true) { sp.Parameters.Add(new SqlInputParameter("@" + c.Name, c)); } else { sp.Parameters.Add(new SqlInputParameter("@PK_" + c.Name, c)); } } } if (storedProcedureType == StoredProcedureType.SelectAll || storedProcedureType == StoredProcedureType.SelectByPrimaryKey) { sp.ResultSets.Add(new StoredProcedureResultSetColumn()); var resultSets = sp.ResultSets[0]; resultSets.TableName = table.Name; foreach (var c in table.GetColumns(null, true)) { resultSets.Columns.Add(new DataType(c.Name, c)); } } return(sp); }
public string GetStoredProcedureName(StoredProcedureType spType) { try { return(storedProcedureNames[spType]); } catch // Dictionary not defined, key not found. { return(null); } }
internal static StoredProcedure CreateStoredProcedure( StoredProcedureType type, TxResourceManager txResourceManager) { switch (type) { case StoredProcedureType.YCSBStordProcedure: return(new YCSBStoredProcedure(txResourceManager)); break; case StoredProcedureType.HybridYCSBStordProcedure: return(new HybridYCSBStoredProcedure(txResourceManager)); } return(null); }
private StoredProcedure CreateStoredProcedure(Database database, Table table, StoredProcedureType storedProcedureType, String query) { var r = this.DatabaseSchemaReader; var db = database; var storedProcedureName = table.Name + storedProcedureType.ToString(); if (r.ExistStoredProcedure(storedProcedureName) == true) { db.ExecuteCommand("drop procedure " + storedProcedureName); } this.ExecuteCommand(db, query); return(this.CreateStoredProcedure(storedProcedureName, storedProcedureType, query, table)); }
public SchemaProcedure(string name, StoredProcedureType type) { this.Name = name; this.ProcedureType = type; }
public ResultSetClassFactory(String storedProcedureName, StoredProcedureType storedProcedureType, StoredProcedureResultSetColumn resultSet) { this.StoredProcedureName = storedProcedureName; this.StoredProcedureType = storedProcedureType; this.ResultSet = resultSet; }