天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

【原創】c#實現用SQL池(多線程),定時批量執行SQL語句

  在實際項目開發中,業務邏輯層的處理速度往往很快,特別是在開發Socket通信服務的時候,網絡傳輸很快,但是一旦加上數據庫操作,性能一落千丈,數據庫操作的效率往往成為一個系統整體性能的瓶頸。面對這問題,我們怎么辦呢?好,下面我就為大家介紹一種方法:構建SQL池,分離業務邏輯層和數據訪問層,讓業務邏輯層從低效的數據庫操作解脫,以提高系統整體性能。

(一)SQL池

  SQL池是SQL容器,用于存放業務邏輯層拋過來的SQL語句。SQL池主要提供以下幾種方法:

  1)internal string Pop(),從池中取出SQL。

  2)internal void Push(string item),增加一個SQL到池中。

  3)internal string[] Clear(),清空SQL池,清空前,返回SQL池中所有SQL語句。

  特別提醒一下,SQL池是面向多線程的,所以必須對公共資源SQL采取鎖機制。這里采用互斥鎖,當業務邏輯層線程往SQL池中拋入SQL語句時,禁止SQL執行線程執行SQL語句,反之,當SQL執行線程執行SQL語句時,也不允許業務邏輯層線程往SQL池中拋入SQL語句。為什么要這么做?因為SQL執行線程是批量執行SQL語句,在批量執行SQL語句前,會從池中取出所有SQL語句,如果此時業務邏輯層線程往SQL池中拋入SQL語句,則會導致這些SQL語句丟失,得不到執行。

  下面是SQL池代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace Test1
{
sealed class SQLPool
{
//互斥鎖
public static Mutex mutexSQLPool = new Mutex();

//SQL池
Stack<string> pool;

/// <summary>
/// 初始化SQL池
/// </summary>
internal SQLPool()
{
this.pool = new Stack<string>();
}


/// <summary>
/// 獲取SQL池數量
/// </summary>
internal Int32 Count
{
get { return this.pool.Count; }
}


/// <summary>
/// 從池中取出SQL
/// </summary>
/// <returns></returns>
internal string Pop()
{
lock (this.pool)
{
return this.pool.Pop();
}
}


/// <summary>
/// 增加一個SQL到池中
/// </summary>
/// <param name="item"></param>
internal void Push(string item)
{
if (item.Trim() == "")
{
throw new ArgumentNullException("Items added to a SQLPool cannot be null");
}

//此處向SQL池中push SQL必須與Clear互斥
mutexSQLPool.WaitOne();
try
{
this.pool.Push(item); //此處如果出錯,則不會執行ReleaseMutex,將會死鎖
}
catch
{
}
mutexSQLPool.ReleaseMutex();
}


/// <summary>
/// 清空SQL池
/// 清空前,返回SQL池中所有SQL語句,
/// </summary>
internal string[] Clear()
{
string[] array = new string[] { };

//此處必須與Push互斥
mutexSQLPool.WaitOne();
try
{
array = this.pool.ToArray(); //此處如果出錯,則不會執行ReleaseMutex,將會死鎖
this.pool.Clear();
}
catch
{
}
mutexSQLPool.ReleaseMutex();

return array;
}
}
}

it知識庫【原創】c#實現用SQL池(多線程),定時批量執行SQL語句,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 在线成年av动漫电影 | 精品欧美18videosex欧美 | 快插我我好湿啊公交车上做 | old老男人野外树林tv | 狼群影院视频在线观看WWW | 亚洲AV无码乱码国产精品品麻豆 | 99热热在线精品久久 | 在线精彩视频在线观看免费 | 久久人人爽人人片AV人成 | 精品无码久久久久久久久 | 亚洲中文日韩日本在线视频 | 高清国产一区 | 乌克兰粉嫩摘花第一次 | 手机在线观看无码日韩视频 | 中文字幕午夜乱理片 | 一边吃奶一边添P好爽故事 一边吃奶一边啪啪真舒服 一本之道加勒比在线观看 一本之道高清在线观看一区 | 国产精品成人免费观看 | 日韩欧美中文字幕一区 | 永久久久免费人妻精品 | 一本色道久久88综合日韩精品 | 久久热在线视频精品1 | 精品无码日本蜜桃麻豆 | 成人国产亚洲精品A区天堂蜜臀 | 日本老师xxxxx18 | 91精品国产免费入口 | 三级黄在线播放 | 国产精品v欧美精品v日韩 | 李丽莎与土豪50分钟在线观看 | 美女搜查官被高难度黑人在线播放 | 麻豆免费高清完整版 | 99久久全国免费久久爱 | 欧美写真视频一区 | 自拍视频亚洲综合在线精品 | 最近中文字幕高清中文字幕MV | 伦理 电影在线观看 | 内射人妻无码色AV麻豆去百度搜 | 国产婷婷午夜无码A片 | 免费麻豆国产黄网站在线观看 | 久久频这里精品99香蕉久网址 | 国产老师开裆丝袜喷水漫画 | 午夜国产精品影院在线观看 |