茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    c#編寫的高并發(fā)數(shù)據(jù)庫(kù)控制訪問(wèn)代碼
    來(lái)源:易賢網(wǎng) 閱讀:1051 次 日期:2015-04-01 15:26:30
    溫馨提示:易賢網(wǎng)小編為您整理了“c#編寫的高并發(fā)數(shù)據(jù)庫(kù)控制訪問(wèn)代碼”,方便廣大網(wǎng)友查閱!

    代碼的作用在于保證在上端緩存服務(wù)失效(一般來(lái)說(shuō)概率比較低)時(shí),形成倒瓶頸,從而能夠保護(hù)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)宕了,才是大問(wèn)題(比如影響其他應(yīng)用)。

    假設(shè)(非完全正確數(shù)據(jù),僅做示例):

    每秒支持10,000,000次查詢(千萬(wàn));

    一次讀庫(kù)需要耗時(shí):1ms;

    修改內(nèi)存變量需要耗時(shí):0.001ms;

    那么:

    每秒最終訪問(wèn)的數(shù)據(jù)庫(kù)的請(qǐng)求數(shù)量 < 1000

    其他的9,900,000個(gè)請(qǐng)求會(huì)返回到其他頁(yè)面。這就是為啥很多搶單網(wǎng)站有人可以訪問(wèn),而有人得到繁忙中頁(yè)面的原因。

    微觀到1ms來(lái)看,在currentValidSessionID == -1的時(shí)間是 1ms,從而平均會(huì)有10000條記錄涌入。

    currentValidSessionID從-1變?yōu)槠渌档臅r(shí)間為0.001ms,這個(gè)時(shí)間內(nèi),

    代碼如下:

    lock (databaseDoor)

    {

    // now there is only one request can reach below codes.

    if (currentValidSessionID == -1)

    {

    currentValidSessionID = currentRequest.SessionID;

    }

    }

    平均會(huì)有 10000×0.001=10條記錄會(huì)執(zhí)行到上述這段代碼,操作系統(tǒng)會(huì)為鎖形成等待序列。

    那么我們的目標(biāo)是,每毫秒只允許一次讀庫(kù)(因?yàn)槠渌麘?yīng)用也會(huì)使用),所以我們只希望這進(jìn)入的10條,最終只有一條能夠繼續(xù)前進(jìn)。

    那么這就是

    代碼如下:

    if (currentValidSessionID == -1)

    {

    }

    的作用了。再次進(jìn)行一次判斷,進(jìn)入原子保護(hù)隊(duì)列的請(qǐng)求,也只有一個(gè)能夠繼續(xù)。

    一點(diǎn)思考:

    其實(shí)對(duì)于一個(gè)主頻能上N GHz的服務(wù)器來(lái)說(shuō),一個(gè)內(nèi)存數(shù)賦值給另一個(gè)內(nèi)存數(shù)據(jù)就是1~4條指令(平均2條,兩次MOV操作),也就是2/N ns時(shí)間,而不是我們上述假設(shè)的 1000ns(0.001ms)。其實(shí)不用原子,我們已經(jīng)可以把千億級(jí)請(qǐng)求的訪問(wèn)數(shù)控制在個(gè)位數(shù)。

    不過(guò)一個(gè)架構(gòu)師,如果可以用一個(gè)99.99%安全的方案,就絕對(duì)不用99.9%。 SO。

    代碼如下:

    public static long currentValidSessionID = -1;

    public static object databaseDoor = new object();

    void readDatabase(Request currentRequest)

    {

    // use currentValidSessionID to filter out other requests came in during the execute time gap

    if (currentValidSessionID == -1)

    {

    // use object-lock to filter out other requests came in during the variable change time gap.

    lock (databaseDoor)

    {

    // now there is only very little number of requests can reach below codes.

    if (currentValidSessionID == -1)

    { // now there will be only one request can access the database

    currentValidSessionID = currentRequest.SessionID;

    }

    }

    }

    if (currentValidSessionID == currentRequest.SessionID)

    { // here is the one !

    try

    {

    // use transaction to guarantee the execute time to void block

    // access database codes go here

    }

    catch()

    {

    // exception codes go here

    }

    finally

    {

    currentValidSessionID = -1; // recover to original state

    }

    }

    }

    更多信息請(qǐng)查看IT技術(shù)專欄

    更多信息請(qǐng)查看網(wǎng)絡(luò)編程
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報(bào)班

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)