public PersistsHPartitioningsDesignDataCommand(WorkloadAnalysisContext context, IRepositoriesFactory dalRepositories,
                                                DBMS.Contracts.IDbObjectDefinitionGenerator dbObjectDefinitionGenerator)
 {
     this.context                     = context;
     this.dalRepositories             = dalRepositories;
     this.dbObjectDefinitionGenerator = dbObjectDefinitionGenerator;
 }
 public GetExecutionPlansCommand(ILog log, WorkloadAnalysisContext context, Func <Dictionary <long, IExplainResult> > getDictionaryFunc, IExplainRepository explainRepository)
 {
     this.log               = log;
     this.context           = context;
     this.getDictionaryFunc = getDictionaryFunc;
     this.explainRepository = explainRepository;
 }
 public LoadExistingIndicesCommand(WorkloadAnalysisContext context, IIndicesRepository indicesRepository, IRelationsRepository relationsRepository,
                                   IRelationAttributesRepository attributesRepository)
 {
     this.context              = context;
     this.indicesRepository    = indicesRepository;
     this.relationsRepository  = relationsRepository;
     this.attributesRepository = attributesRepository;
 }
예제 #4
0
 public GenerateAndEvaluateFilteredIndicesCommand(WorkloadAnalysisContext context, IToSqlValueStringConverter toSqlValueStringConverter,
                                                  IVirtualIndicesRepository virtualIndicesRepository, IDbObjectDefinitionGenerator dbObjectDefinitionGenerator)
 {
     this.context = context;
     this.toSqlValueStringConverter   = toSqlValueStringConverter;
     this.virtualIndicesRepository    = virtualIndicesRepository;
     this.dbObjectDefinitionGenerator = dbObjectDefinitionGenerator;
 }
 public EvaluateIndicesEnvironmentsCommand(ILog log, WorkloadAnalysisContext context, IVirtualIndicesRepository virtualIndicesRepository, IExplainRepository explainRepository,
                                           IDbObjectDefinitionGenerator dbObjectDefinitionGenerator)
 {
     this.log     = log;
     this.context = context;
     this.virtualIndicesRepository    = virtualIndicesRepository;
     this.explainRepository           = explainRepository;
     this.dbObjectDefinitionGenerator = dbObjectDefinitionGenerator;
 }
예제 #6
0
 public EvaluateHPartitioningEnvironmentsCommand(ILog log, AnalysisSettings settings, WorkloadAnalysisContext context, IVirtualHPartitioningsRepository virtualHPartitioningsRepository,
                                                 IExplainRepository explainRepository, IDbObjectDefinitionGenerator dbObjectDefinitionGenerator)
 {
     this.log      = log;
     this.settings = settings;
     this.context  = context;
     this.virtualHPartitioningsRepository = virtualHPartitioningsRepository;
     this.explainRepository           = explainRepository;
     this.dbObjectDefinitionGenerator = dbObjectDefinitionGenerator;
 }
예제 #7
0
 private void Timer_Elapsed(object sender, ElapsedEventArgs e)
 {
     try
     {
         var analysesForProcessing = workloadAnalysesRepository.LoadForProcessing(MAX_LOADED_REQUESTS);
         foreach (var a in analysesForProcessing)
         {
             var context = new WorkloadAnalysisContext()
             {
                 WorkloadAnalysis = a
             };
             queue.Enqueue(chainFactory.WorkloadAnalysisChain(context));
         }
     }
     catch (Exception ex)
     {
         log.Write(ex);
     }
 }
예제 #8
0
        public IExecutableCommand WorkloadAnalysisChain(WorkloadAnalysisContext context)
        {
            CommandChainCreator chain = new CommandChainCreator();

            chain.Add(commands.UpdateAnalysisStateCommand(context, WorkloadAnalysisStateType.InProgress));
            chain.Add(commands.HandleExceptionCommand(ex => { context.WorkloadAnalysis.ErrorMessage = ex.Message;
                                                              commands.UpdateAnalysisStateCommand(context, WorkloadAnalysisStateType.EndedWithError).Execute(); }));
            chain.Add(commands.LoadWorkloadCommand(context));
            chain.Add(commands.LoadDatabaseInfoCommand(context));
            chain.Add(commands.LoadWorkloadStatementsDataCommand(context));
            chain.Add(commands.LoadWorkloadRelationsDataCommand(context));
            chain.Add(commands.ExtractStatementsQueryDataCommand(context));
            chain.Add(commands.GetRealExecutionPlansCommand(context));

            // horizontal partitioning design
            chain.Add(commands.InitializeHPartitioningEnvironmentCommand(context));
            chain.Add(commands.PrepareHPartitioningAttributeDefinitionsCommand(context));
            chain.Add(commands.GenerateBaseHPartitioningEnvironmentsCommand(context));
            chain.Add(commands.EvaluateHPartitioningEnvironmentsCommand(context));
            chain.Add(commands.CleanUpNotImprovingHPartitioningAndTheirEnvsCommand(context));
            chain.Add(commands.PersistsHPartitioningsDesignDataCommand(context));

            // indices design
            chain.Add(commands.InitializeVirtualIndicesEnvironmentCommand(context));
            chain.Add(commands.LoadExistingIndicesCommand(context));
            chain.Add(commands.GenerateBaseBtreeIndicesCommand(context));
            chain.Add(commands.ExcludeExistingIndicesCommand(context));
            chain.Add(commands.GenerateBaseIndicesEnvironmentsCommand(context));
            chain.Add(commands.EvaluateIndicesEnvironmentsCommand(context));
            chain.Add(commands.CleanUpNotImprovingIndiciesAndTheirEnvsCommand(context));
            chain.Add(commands.GenerateCoveringBTreeIndicesCommand(context));
            chain.Add(commands.GenerateFinalIndicesEnvironmentsCommand(context));
            chain.Add(commands.EvaluateIndicesEnvironmentsCommand(context));
            chain.Add(commands.CleanUpNotImprovingIndiciesAndTheirEnvsCommand(context));
            chain.Add(commands.GenerateAndEvaluateFilteredIndicesCommand(context));
            chain.Add(commands.PersistsIndicesDesignDataCommand(context));

            chain.Add(commands.PersistsRealExecutionPlansCommand(context));
            chain.Add(commands.UpdateAnalysisStateCommand(context, WorkloadAnalysisStateType.EndedSuccesfully));
            return(chain.FirstCommand);
        }
 public ExtractStatementsQueryDataCommand(WorkloadAnalysisContext context, DBMS.Contracts.IRepositoriesFactory dbmsRepositories)
 {
     this.context = context;
     this.attributesRepository  = dbmsRepositories.GetRelationAttributesRepository();
     this.expressionsRepository = dbmsRepositories.GetExpressionOperatorsRepository();
 }
 public CleanUpNotImprovingHPartitioningAndTheirEnvsCommand(WorkloadAnalysisContext context)
 {
     this.context = context;
 }
예제 #11
0
 public IChainableCommand GenerateBaseIndicesEnvironmentsCommand(WorkloadAnalysisContext context)
 {
     return(new GenerateBaseIndicesEnvironmentsCommand(context));
 }
예제 #12
0
 public IChainableCommand ExtractStatementsQueryDataCommand(WorkloadAnalysisContext context)
 {
     return(new ExtractStatementsQueryDataCommand(context, dbmsRepositories));
 }
예제 #13
0
 public LoadDatabaseInfoCommand(WorkloadAnalysisContext context, IDatabasesRepository databasesRepository)
 {
     this.context             = context;
     this.databasesRepository = databasesRepository;
 }
 public CleanUpNotImprovingIndiciesAndTheirEnvsCommand(WorkloadAnalysisContext context)
 {
     this.context = context;
 }
 public GenerateCoveringBTreeIndicesCommand(WorkloadAnalysisContext context)
 {
     this.context = context;
 }
예제 #16
0
 public IChainableCommand LoadExistingIndicesCommand(WorkloadAnalysisContext context)
 {
     return(new LoadExistingIndicesCommand(context, dbmsRepositories.GetIndicesRepository(), dbmsRepositories.GetRelationsRepository(),
                                           dbmsRepositories.GetRelationAttributesRepository()));
 }
 public PersistsRealExecutionPlansCommand(WorkloadAnalysisContext context, IRepositoriesFactory dalRepositories)
 {
     this.context         = context;
     this.dalRepositories = dalRepositories;
 }
 public LoadWorkloadStatementsDataCommand(WorkloadAnalysisContext context, INormalizedWorkloadStatementsRepository repository)
 {
     this.context    = context;
     this.repository = repository;
 }
 public GenerateFinalIndicesEnvironmentsCommand(WorkloadAnalysisContext context)
 {
     this.context = context;
 }
예제 #20
0
 public IChainableCommand ExcludeExistingIndicesCommand(WorkloadAnalysisContext context)
 {
     return(new ExcludeExistingIndicesCommand(context));
 }
예제 #21
0
 public IChainableCommand CleanUpNotImprovingIndiciesAndTheirEnvsCommand(WorkloadAnalysisContext context)
 {
     return(new CleanUpNotImprovingIndiciesAndTheirEnvsCommand(context));
 }
 public PrepareHPartitioningAttributeDefinitionsCommand(WorkloadAnalysisContext context, IAttributeHPartitioningDesigner attributeHPartitioningDesigner, AnalysisSettings settings)
 {
     this.context = context;
     this.attributeHPartitioningDesigner = attributeHPartitioningDesigner;
     this.settings = settings;
 }
예제 #23
0
 public InitializeVirtualIndicesEnvironmentCommand(WorkloadAnalysisContext context, IVirtualIndicesRepository repository)
 {
     this.context    = context;
     this.repository = repository;
 }
예제 #24
0
 public LoadWorkloadCommand(WorkloadAnalysisContext context, IWorkloadsRepository workloadsRepository)
 {
     this.context             = context;
     this.workloadsRepository = workloadsRepository;
 }
예제 #25
0
 public IChainableCommand GenerateCoveringBTreeIndicesCommand(WorkloadAnalysisContext context)
 {
     return(new GenerateCoveringBTreeIndicesCommand(context));
 }
 public GenerateBaseBtreeIndicesCommand(WorkloadAnalysisContext context, AnalysisSettings settings)
 {
     this.context  = context;
     this.settings = settings;
 }
 public ExcludeExistingIndicesCommand(WorkloadAnalysisContext context)
 {
     this.context = context;
 }
 public InitializeHPartitioningEnvironmentCommand(WorkloadAnalysisContext context, IVirtualHPartitioningsRepository repository)
 {
     this.context    = context;
     this.repository = repository;
 }
예제 #29
0
 public GenerateBaseHPartitioningEnvironmentsCommand(WorkloadAnalysisContext context)
 {
     this.context = context;
 }
예제 #30
0
 public IChainableCommand LoadWorkloadStatementsDataCommand(WorkloadAnalysisContext context)
 {
     return(new LoadWorkloadStatementsDataCommand(context, dalRepositories.GetNormalizedWorkloadStatementsRepository()));
 }