//
        // GET: /admin/DataBase/
        public ActionResult Index()
        {
            var     databaseStatsRepository = DependencyResolver.Current.GetService <IDatabaseStatsRepository>();
            DbUsage dbUsage = databaseStatsRepository.GetStats();

            return(View(dbUsage));
        }
Exemplo n.º 2
0
        public static void InsertDb()
        {
            while (true)
            {
                if (saveCounter >= SaveLimit && SetDbUsing(DbUsage.SaveThisFuckingShit))
                {
                    while (saveQueue.TryDequeue(out var image))
                    {
                        storage.InsertMachineTagsWithoutSaving(image);
                        OnDbInserted?.Invoke(image);
                    }

                    storage.DoSave();
                    OnDbSaved?.Invoke();
                    saveCounter    = 0;
                    currentDbUsage = DbUsage.None;
                }
                else
                {
                    OnDbSleep?.Invoke();
                    var r = new Random();
                    Thread.Sleep(r.Next(50, 150));
                }
            }
        }
Exemplo n.º 3
0
        private static bool SetDbUsing(DbUsage newStatus)
        {
            if (currentDbUsage != DbUsage.None && currentDbUsage != newStatus)
            {
                return(false);
            }

            currentDbUsage = newStatus;
            return(true);
        }
Exemplo n.º 4
0
        /// <summary>
        ///     Получение данных статистики базы данных
        /// </summary>
        public DbUsage GetStats()
        {
            /*Better here http://kamranicus.com/Blog/Posts/51/protip-show-db-usage-in-your-ef-application */
            var sqlConn = Db.Database.Connection as SqlConnection;
            var cmd     = new SqlCommand("sp_spaceused")
            {
                CommandType = CommandType.StoredProcedure,
                Connection  = sqlConn
            };
            var adp     = new SqlDataAdapter(cmd);
            var dataset = new DataSet();

            if (sqlConn != null)
            {
                sqlConn.Open();
            }
            try
            {
                adp.Fill(dataset);
            }
            catch (SqlException ex)
            {
                return(null);
            }
            finally
            {
                if (sqlConn != null)
                {
                    sqlConn.Close();
                }
            }

            var dbUsage = new DbUsage
            {
                database_name     = dataset.Tables[0].Rows[0][0].ToString(),
                database_size     = dataset.Tables[0].Rows[0][1].ToString(),
                unallocated_space = dataset.Tables[0].Rows[0][2].ToString(),
                reserved          = dataset.Tables[1].Rows[0][0].ToString(),
                data       = dataset.Tables[1].Rows[0][1].ToString(),
                index_size = dataset.Tables[1].Rows[0][2].ToString(),
                unused     = dataset.Tables[1].Rows[0][3].ToString()
            };

            return(dbUsage);
        }
Exemplo n.º 5
0
        private static void FillQueueThread()
        {
            var lastId = 0;

            while (true)
            {
                if (queue.Count <= FillQueueLimit && SetDbUsing(DbUsage.GetEntries))
                {
                    var images = storage.GetImagesWithoutMachineTags(lastId, DbSelectImagesAmount);
                    foreach (var image in images)
                    {
                        queue.Enqueue(image);
                        lastId = image.Id;
                    }

                    currentDbUsage = DbUsage.None;
                }

                Thread.Sleep(Random.Next(50, 150));
            }
        }