On 2/18/21 12:53 PM, Jaco Kroon wrote:
Hi All,

So I've been updating some code to use func_odbc vs previous solutions
and have bumped into a few concerns (1 I'd appreciate feedback on the
review, 2 is prelude to 3, which is the main issue currently):
<snip>
2.  Too many queries resulting in the database server (which is set for
maximum persistence) being unable to keep up, so enters
ODBC(transaction,mydb)=meh + ODBC(forcecommit)=1.  This sorts out the
COMMIT rate since now things are getting grouped into transactions.

<snip>

Nothing is stopping you from using more than one database server. With ODBC its pretty easy to spread the load over several machines. But aside from throwing more metal at the problem, you may also want to review how you are using your database. Perhaps some queries are extra slow, maybe some queries can be combined, or perhaps a different storage engine is more suitable, etc. Transactions help prevent concurrent queries from stepping on each other's toes as well as allowing the database to delay disk flushes. Transactions however may also cause delays while waiting on row and table locks, potentially deadlocking (especially long-running ones).

Without diving deep into transactions, it sounds like your dialplan is doing lots of small modifications during the call. Databases like doing things in bulk, so perhaps collecting changes in channel variables before submitting them with a hangup handler will be more effective?

--
Dennis Buteyn
Xorcom Ltd


--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to