回覆列表
  • 1 # 使用者7300737675175

    你這個是請求併發問題。你的場景:1、查詢是否存在。 2、插入資料。這是完全獨立的兩個操作,比如:兩個併發過來,第一個請求a判斷完條件1資料不存在但還沒寫入資料,第二個請求b也判斷條件1資料不存在,那最終結果a和b都插去了兩條資料。解決方法:加鎖不建議用mysql資料庫的鎖可以用redis,首先redis是單執行緒操作本身不存在併發問題,redis有個原子操作自增+1操作incr 。每個請求過來執行incr領取自己的令牌,每個請求拿到的數字肯定是唯一的,這樣你只允許號碼為1的操作插入資料,其餘的不插入,這樣就可以了。對於鎖粒度就是redis的key看你針對 某個某類操作加鎖來設定對應的key,並考慮下過期時間(鎖釋放 )

  • 2 # pzyyo24296

    1、建立資料庫表,create table test_users(user_id bigint, user_name varchar(100));2、檢視系統檢視tables,在系統檢視中可以查到剛建的資料表,select * from information_schema.tables t where table_name = "test_users",3、檢視系統檢視columns,在系統檢視中可以查到該表所有的欄位,select * from information_schema.columns t where table_name = "test_users",4、查詢表中不存在的欄位,執行無返回結果,select * from information_schema.columns t where table_name = "test_users" and column_name = "user_id2"

  • 中秋節和大豐收的關聯?
  • 你會喜歡一個愛恨分明的人嗎?