Microsoft Soft SQL Server 大數據----分區表性能測試

分區表sql

MSSQL有一個大數據儲存方案,能夠提升效率那就是分區表。多線程

使用起來跟普通表沒有區別。至於具體原理本身度娘吧。app

真正性能的提升,是依賴於硬件的加入。也是就說,當把一個表設置成分區表,每個分區,應該儲放在不一樣的硬盤的。dom

若是分區表使用的是同一塊硬盤,那麼性能是不會有提升。post

組裝電腦性能

自己案例,將使用三塊硬盤儲存,將一個表設三個分區。大數據

好啦,吃飽就開始幹活啦,先組裝好電腦,爲了三塊硬盤,我將其它二臺電腦,我把它們。。。ui

好了,開始裝系統,Windows爲了方便,我仍是裝GUI的系統吧。加密

成功安裝windosw server 2008 r2 datacenter 版以後,再安裝mssql 2008 r2spa

添加模擬數據

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Dapper;
using System.Data.SqlClient;
using System.Data;
using System.Threading.Tasks;

namespace Write
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("開始寫入模擬數據");
            //多線程寫入
            for (var i = 0; i < 20; i++)
            {
                Task.Run((Action)Add);
            }
            Console.ReadKey();
        }

        public static void Add()
        {
            var rand = new Random();
            StringBuilder str1 = new StringBuilder();
            str1.Append("趙、錢、孫、李、周、吳、鄭、王、馮、陳、楮、衛、蔣、沈、韓、楊、朱、秦、尤、許、何、呂、施、張、孔、曹");
            var familyNameItems = str1.ToString().Split("");

            StringBuilder str2 = new StringBuilder();
            str2.Append("宏子 婷婷 蓉蓉 麗娜 娜 鈺 天霞 官君 紅梅 淑慧 海娟 洪山 ");
            str2.Append("盼麗 豔紅 甜甜 璨 彬彬 銀紅 晨曦 婷 廣榮 蓓 小豔 欣如 輔仁 嘉 雯婷 玉紅 晨霞 ");
            str2.Append("涵 明 麗娜 青 茵 瑞微 逸羣 思陽 臻 勇 志光 克濤 靖華 慧霞 衛偉 藜文 清華 莎 曉新 ");
            str2.Append("安安 荌荌 安卉 安娜 安妮 安然 傲冬 傲晴 傲雪 白雪 白雲 碧螺 碧菡 碧玉 冰藍 ");
            str2.Append("含煙 含玉 涵菡 晗蕾 涵韻 晗玥 寒凝 寒香 寒雁 和悌 和美 和怡 和雅 和璧 和玉 ");
            str2.Append("紅螺 虹雨 虹彩 虹英 虹穎 虹影 懷玉 慧心 慧穎 慧雅 慕青 問蘭 爾嵐 元香 曼文");
            var firstNameItems = str2.ToString().Split(" ");

            var departmentItems = new List<string> { "事業部", "文化部", "技術部", "客服部", "運營部" };
            var positionItems = new List<string> { "文員", "業務員", "開發人員", "客服員", "銷售經理" };
            var statusItems = new List<int> { 1, 2, 3 };

            IDbConnection connection = new SqlConnection("Data Source=192.168.99.5;Initial Catalog=Test;User Id=sa;Password=123;");
            var items = new List<OAUser>();
            while (true)
            {
                var user = new OAUser
                {
                    UserName = $"15{rand.Next(100000000, 999999999).ToString()}",
                    PassWord = "123456",
                    Salt = rand.Next(1111111, 6666666).ToString(),
                    NickName = familyNameItems[rand.Next(0, familyNameItems.Count())]
                    + firstNameItems[rand.Next(0, firstNameItems.Count())],
                    IsFrozen = false,
                    Position = positionItems[rand.Next(0, positionItems.Count())],
                    Department = departmentItems[rand.Next(0, departmentItems.Count())],
                    Status = statusItems[rand.Next(0, statusItems.Count())],
                    Balance = rand.Next(10, 99999),
                    CreateTime = DateTime.Now
                };
                items.Add(user);
                //批量數據寫入,減小單條不斷調用鏈接池次數
                if (items.Count < 2000)
                    continue;

                StringBuilder strSql = new StringBuilder();
                strSql.Append("INSERT INTO [Test].[dbo].[OAUser]([Balance],[CreateTime],[Department],[IsFrozen] ,[NickName],[PassWord],[Position],[Salt],[Status] ,[UserName])");
                strSql.Append(" VALUES (@Balance,@CreateTime,@Department,@IsFrozen,@NickName,@PassWord,@Position,@Salt,@Status,@UserName)");
                connection.Execute(strSql.ToString(), items);
                Console.WriteLine($"成功將用戶{items.Count}資料寫入");
                items.Clear();
            }
        }
    }
    
    /// <summary>
    /// 用戶表
    /// </summary>
    public class OAUser
    {
        /// <summary>
        /// 主健
        /// </summary>
        public int Id { set; get; }

        /// <summary>
        /// 用戶帳號
        /// </summary>
        public string UserName { set; get; }

        /// <summary>
        /// 用戶密碼
        /// </summary>
        public string PassWord { set; get; }

        /// <summary>
        /// 暱稱
        /// </summary>
        public string NickName { get; set; }

        /// <summary>
        /// 加密鹽
        /// </summary>
        public string Salt { set; get; }

        /// <summary>
        /// 是否凍結
        /// </summary>
        public bool IsFrozen { set; get; }

        /// <summary>
        /// 餘額
        /// </summary>
        public decimal Balance { set; get; }

        /// <summary>
        /// 部門
        /// </summary>
        public string Department { set; get; }

        /// <summary>
        /// 職位
        /// </summary>
        public string Position { set; get; }
        
        /// <summary>
        /// 狀態(1在職 2離職 3兼職)
        /// </summary>
        public int Status { set; get; }

        /// <summary>
        /// 建立時間
        /// </summary>
        public DateTime CreateTime { set; get; }
    }
}

 

速度還不錯,達 7.2M/s 快接近個人網線最高速度了,咱們是百M網卡,最高也是10M/S 左右

普通表性能查詢

哎,先寫到這裏吧,拖了兩個星期,也沒空,或沒心情往下面寫,先擱着吧,日後再補上了

相關文章
相關標籤/搜索