Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 public TransactionRequest(
     string sessionId,
     StoredProcedureWorkload workload,
     StoredProcedureType type)
 {
     this.SessionId         = sessionId;
     this.Workload          = workload;
     this.OperationType     = OperationType.Open;
     this.IsStoredProcedure = true;
     this.ProcedureType     = type;
 }
Пример #4
0
        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);
        }
Пример #5
0
 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));
        }
Пример #8
0
 public SchemaProcedure(string name, StoredProcedureType type)
 {
     this.Name          = name;
     this.ProcedureType = type;
 }
Пример #9
0
 public ResultSetClassFactory(String storedProcedureName, StoredProcedureType storedProcedureType, StoredProcedureResultSetColumn resultSet)
 {
     this.StoredProcedureName = storedProcedureName;
     this.StoredProcedureType = storedProcedureType;
     this.ResultSet           = resultSet;
 }
Пример #10
0
 public ResultSetClassFactory(String storedProcedureName, StoredProcedureType storedProcedureType, StoredProcedureResultSetColumn resultSet)
 {
     this.StoredProcedureName = storedProcedureName;
     this.StoredProcedureType = storedProcedureType;
     this.ResultSet = resultSet;
 }