簡體   English   中英

MariaDB 中的同時交易有限制嗎?

[英]Is there a limit for simultaneous transactions in MariaDB?

有 Centos 7 服務器,帶有 Asterisk PBX 11.25.3 和 mysql Ver 15.1 Distrib 10.3.18-MariaDB,適用於 ZEDC9F0A5A8647797BF6ZE3

extensions.conf:

[from-main-asterisk]
exten => _9XXXXXXXXXXXX,1,MYSQL(Connect connid localhost root rootpasswd mydatabase)
exten => _9XXXXXXXXXXXX,n,GotoIf($["${connid}" = ""]?error,1)
exten => _9XXXXXXXXXXXX,n(select_sim),MYSQL(Query RESULTID ${connid} set autocommit=0)
exten => _9XXXXXXXXXXXX,n,MYSQL(Query RESULTID ${connid} START TRANSACTION)
exten => _9XXXXXXXXXXXX,n,MYSQL(Query RESULTID ${connid} SELECT sim_name FROM  sim_stat  where status = 'FREE'  order by rand() limit 1 ) 
exten => _9XXXXXXXXXXXX,n(sqlresult),MYSQL(Fetch fetchid ${RESULTID} SIM_NAME)
exten => _9XXXXXXXXXXXX,n,MYSQL(Clear ${RESULTID})
exten => _9XXXXXXXXXXXX,n,MYSQL(Query RESULTID ${connid} UPDATE sim_stat set status = "BUSY" where sim_name = "${SIM_NAME}") 
exten => _9XXXXXXXXXXXX,n,MYSQL(Query RESULTID ${connid} COMMIT)
exten => _9XXXXXXXXXXXX,n,Dial(SIP/gsm-${SIM_NAME}#${EXTEN:1},,g)
exten => _9XXXXXXXXXXXX,n,Hangup

exten => h,1,MYSQL(Query RESULTID ${connid} UPDATE sim_stat set status = "FREE"  where sim_name = "${SIM_NAME}")
exten => h,n,MYSQL(Query RESULTID ${connid} COMMIT)
exten => h,n,MYSQL(Disconnect ${connid})

exten => error,1,NoOp(Database connection error!)
exten => error,n,Hangup

sip.conf:

[from-main-asterisk]
type=friend
host=x.x.x.x
qualify=yes
qualifyfreq=60
canreinvite=no
disallow=all
allow=alaw
context=from-main-asterisk

當來自中繼的同時呼叫超過 15-20 個時,我收到消息:

WARNING[2239][C-00000389] app_mysql.c: aMYSQL_query: mysql_query failed. Error: Lock wait timeout exceeded; try restarting transaction

MariaDB 中的同時交易有限制嗎?

  1. 使用 func_odbc,它可以正確處理連接
  2. 按 rand() 排序總是掃描整個表
  3. 如果您的表類型為 myisam,則任何對表的掃描都會鎖定整個表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM