標籤:技術分享 into false 密碼 div balance lse dom tac
分區表
MSSQL有一個大資料儲存方案,可以提高效率那就是分區表。
使用起來跟普通表沒有區別。至於具體原理自己度娘吧。
真正效能的提高,是依賴於硬體的加入。也是就說,當把一個表設定成分區表,每一個分區,應該儲放在不同的硬碟的。
如果分區表使用的是同一塊硬碟,那麼效能是不會有提高。
組裝電腦
本身案例,將使用三塊硬碟儲存,將一個表設三個分區。
好啦,吃飽就開始幹活啦,先組裝好電腦,為了三塊硬碟,我將其它二台電腦,我把它們。。。
好了,開始裝系統,Windows為了方便,我還是裝GUI的系統吧。
成功安裝windosw server 2008 r2 datacenter 版之後,再安裝mssql 2008 r2
添加類比資料
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 左右
普通表效能查詢
哎,先寫到這裡吧,拖了兩個星期,也沒空,或沒心情往下面寫,先擱著吧,往後再補上了
Microsoft Soft SQL Server 大資料----分區表效能測試