1樓:愛可生雲資料庫
列的自增屬性,一般用來設定整數列根據一定步長逐步增長的值,類似於其他資料庫的序列。不過這裡的“序列”是基於特定一張表的。關於自增屬性的相關特性如下:
1. 控制自增屬性效能的變數:innodb_autoinc_lock_mode
innodb_autoinc_lock_mode=0
代表傳統模式,也就是說,在對有自增屬性的欄位插入記錄時,會持續持有一個表級別的自增鎖,直到語句執行結束為止。比如說下面兩條語句,sql 1 在執行期間,一直持有對錶 f1 的表級自增鎖,接下來 sql 2 執行時鎖超時。
innodb_autoinc_lock_mode=1
代表連續模式,和傳統模式差不多,不同的點在於對於簡單的插入語句,比如 sql 2,只在分配新的 id 過程中持有一個輕量級的互斥鎖(執行緒級別,而不是事務級別),而不是直到語句結束才釋放的表鎖。
代表交錯模式。這個模式下放棄了自增表鎖,產生的值會不連續。不過這是效能最高的模式,多條插入語句可以併發執行。mysql 8.0 預設就是交錯模式。
那針對複製安全來說,以上三種模式,0 和 1 對語句級別安全,也就是產生的二進位制日誌複製到任何其他機器都資料都一致;2 對於語句級別不安全;三種模式對二進位制日誌格式為行的都安全。
2. 控制自增屬性的步長以及偏移量
一般用在主主複製架構或者多源複製架構裡,主動規避主鍵衝突。
auto_increment_increment 控制步長
auto_increment_offset 控制偏移量
3. 對於要立刻獲取插入值的需求
就是說要獲取一張表任何時候的最大值,應該時刻執行以下 sql 3 ,而不是 sql 2。sql 2 裡的函式 last_insert_id() 只獲取上一條語句最開始的 id,只適合簡單的 insert。
4. 自增列溢位現象
自增屬性的列如果到了此列資料型別的最大值,會發生值溢位。比如變更表 f1 的自增屬性列為 tinyint。
sql 2 顯式插入最大值 127, sql 3 就報錯了。所以這點上建議提前規劃好自增列的欄位型別,提前瞭解上限值。
5. 自增列也可以顯式插入有符號的值
那針對這樣的,建議在請求到達資料庫前規避掉。
2樓:
方法一: 如果曾經的資料都不需要的話,可以直接清空所有資料,並將自增欄位恢復從1開始計數
truncate table 表名
方法二: dbcc checkident (’table_name’, reseed, new_reseed_value) 當前值設定為 new_reseed_value。如果自建立表後沒有將行插入該表,則在執行 dbcc checkident 後插入的第一行將使用 new_reseed_value 作為標識。
否則,下一個插入的行將使用 new_reseed_value + 1。如果 new_reseed_value 的值小於標識列中的最大值,以後引用該表時將產生 2627 號錯誤資訊。
方法二不會清空已有資料,操作比較靈活,不僅可以將自增值歸零,也適用於刪除大量連續行後,重新設定自增值並插入新的資料;或從新的值開始,當然不能和已有的衝突。
$sql="delete from $table_vote";
mysql_query($sql, $link);
$sql="alter table $table_vote auto_increment=1";
mysql_query($sql, $link);
3樓:_____至尊寶
問題描述清楚,需要自增還是不需要
mysql 設定id主鍵自增,從0開始,請問怎麼設?
4樓:小熙
有時候我們在測試**的時候,刪除測試資料導致id不是從0開始,那如果想id是從0開始怎麼辦呢?
mysql預設自增id是從1開始了,但當我們如果有插入表或使用delete刪除id之後id就會不會從1開始了.
使用mysql時,通常表中會有一個自增的id欄位,但當我們想將表中的資料清空重新新增資料時,希望id重新從1開始計數,用以下兩種方法均可.
通常的設定自增欄位的方法,建立**時新增:
create table table1(id int auto_increment primary key,...)
5樓:
在建表語句中加入
id int identity(0,1) not null,
mysql 的語句是
id mediumint not null auto_increment, 你的
已經有了啊
6樓:匿名使用者
就我所知這個好像無法實現,就算你自己編譯mysql恐怕也很難。因為last_insert_id()這個內建的函式返回最近一次插入的自增長id,當沒有符合條件的id時,它返回0,所以如果自增長從0開始的話,這個返回值就很難判定到底是插入了一條自增長id為0的記錄還是沒有符合條件的記錄了。
7樓:匿名使用者
autoincrement本身就是從1開始計數
mysql記憶體溢位怎麼處理,linux伺服器老是記憶體溢位殺死mysql,怎麼解決
使用 unbuffered cursor 可以避免記憶體問題。cursor 預設使用 buffered 模式。這種模式會把所有結果集返回並載入記憶體。如果結果集很大的話,記憶體會爆。unbuffered cursor 是每次只將下一行結果返回,記憶體占用很小。不過這種模式缺點很多,所以沒有作為預設的...
加熱包壞了怎麼辦,自熱包怎麼處理
發熱包是吃自助式火鍋較為普遍的一種物質,主要是以便推動火鍋的發熱量釋放出來,我們往水裡新增發熱包能夠讓燒開,隨後就可以開展打火鍋了,這類東西對人體是沒有傷害的,可是吃了火鍋以後,我們應當要講發熱包放入垃圾分類 解決,並且發熱包是不可以放進開水裡邊,還需要開展玻璃餐桌的隔熱保溫的。space加熱包當中...
營改增對於服務業怎麼交稅怎麼做賬務處理
雪蘭夢幻 服務業適用於6 的稅率。賬務處理辦法如下 1 銷售時 借 銀行存款或應收賬款 貸 主營業務收入 銷售額 1.03 應交稅費 應交增值稅 銷售額 1.03 0.03 2 交納時 借 應交稅費 應交增值稅 貸 銀行存款 當前,距離5月1日最後四個行業 建築業 房地產業 金融業 生活服務業推行營...