久久狠狠色噜噜狠狠狠狠97|国产成人久久精品麻豆二区|精品精拍国产日韩26u|色偷偷亚洲第一综合网

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補償
全部產品
您的位置: 網站首頁 > 幫助中心>文章內容

AUTO_INCREMENT列在InnoDB里如何工作

發(fā)布時間:  2012/8/26 16:00:04

如果你為一個表指定AUTO_INCREMENT列,在數據詞典里的InnoDB表句柄包含一個名為自動增長計數器的計數器,它被用在為該列賦新值。自動增長計數器僅被存儲在主內存中,而不是存在磁盤上。 電腦軟件www.boydavid.com

InnoDB使用下列算法來為包含一個名為ai_col的AUTO_INCREMENT列的表T初始化自動增長計數器:服務器啟動之后,當一個用戶對表T做插入之時,InnoDB執(zhí)行等價如下語句的動作:

 

SELECT MAX(ai_col) FROM T FOR UPDATE;  

語句取回的值逐次加一,并被賦給列和自動增長計數器。如果表是空的,值1被賦予該列。如果自動增長計數器沒有被初始化,而且用戶調用為表T顯示輸出的SHOW TABLE STATUS語句,則計數器被初始化(但不是增加計數)并被存儲以供隨后的插入使用。注意,在這個初始化中,我們對表做一個正常的獨占鎖定,這個鎖持續(xù)到事務的結束。

 

InnoDB對為新創(chuàng)建表的初始化自動增長計數器允許同樣的過程。

 

注意,如果用戶在INSERT中為AUTO_INCREMENT列指定NULL或者0,InnoDB處理行,就仿佛值還沒有被指定,且為它生成一個新值。

 

自動增長計數器被初始化之后,如果用戶插入一個明確指定該列值的行,而且該值大于當前計數器值,則計數器被設置為指定列值。如果沒有明確指定一個值,InnoDB給計數器增加一,并且賦新值給該列。 電腦軟件www.boydavid.com

當訪問自動增長計數器之時,InnoDB使用專用的表級的AUTO-INC鎖定,該鎖持續(xù)到當前SQL語句的結束而不是到業(yè)務的結束。引入了專用鎖釋放策略,來為對一個含AUTO_INCREMENT列的表的插入改善部署。兩個事務不能同時對同一表有AUTO-INC鎖定。

 

注意,如果你回滾從計數器獲得數的事務,你可能會在賦給AUTO_INCREMENT列的值的序列中發(fā)現(xiàn)間隙。計算機學習網站www.boydavid.com

如果用戶給列賦一個賦值,或者,如果值大過可被以指定整數格式存儲的最大整數,自動增長機制的行為不被定義。

 

在CREATE TABLE和ALTER TABLE語句中,InnoDB支持AUTO_INCREMENT = n 表選項來設置計數器初始值或變更當前計數器值。因在本節(jié)早先討論的原因,這個選項的影響在服務器重啟后就無效了。


本文出自:億恩科技【www.yaz797.com】

服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區(qū)翠竹街1號總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線