From: Michael L. Young Date: Thu, 24 Jul 2014 21:01:37 +0000 (+0000) Subject: core/db: Revert Patch Added In Attempt To Improve I/O Performance X-Git-Tag: 13.0.0-beta1~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7059b001adb2583e1b6b2bb667d538df2fb3709b;p=thirdparty%2Fasterisk.git core/db: Revert Patch Added In Attempt To Improve I/O Performance Reverting the patch since it was causing a regression and after fixing the regression, there were no performance gains. At least based on my method for measurement. ASTERISK-24050 Review: https://reviewboard.asterisk.org/r/3841/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419504 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/include/asterisk/astdb.h b/include/asterisk/astdb.h index 1eff7908c1..8a870ae83c 100644 --- a/include/asterisk/astdb.h +++ b/include/asterisk/astdb.h @@ -50,14 +50,7 @@ int ast_db_get(const char *family, const char *key, char *value, int valuelen); */ int ast_db_get_allocated(const char *family, const char *key, char **out); -/*! \brief Store value addressed by family/key - * - * Try to insert a row first. If a row already exists with the given key - * we will then perform an update on this row. - * - * The attempt here is to increase disk I/O performance by not deleting an existing - * row and then inserting a new row when one already exists. - */ +/*! \brief Store value addressed by family/key */ int ast_db_put(const char *family, const char *key, const char *value); /*! \brief Delete entry in astdb */ diff --git a/main/db.c b/main/db.c index 80af29f750..5a0f174343 100644 --- a/main/db.c +++ b/main/db.c @@ -119,7 +119,7 @@ static void db_sync(void); #define DEFINE_SQL_STATEMENT(stmt,sql) static sqlite3_stmt *stmt; \ const char stmt##_sql[] = sql; -DEFINE_SQL_STATEMENT(put_stmt, "INSERT OR IGNORE INTO astdb (key, value) VALUES (?1, ?2); UPDATE astdb SET value=?2 WHERE changes()=0 AND key=?1") +DEFINE_SQL_STATEMENT(put_stmt, "INSERT OR REPLACE INTO astdb (key, value) VALUES (?, ?)") DEFINE_SQL_STATEMENT(get_stmt, "SELECT value FROM astdb WHERE key=?") DEFINE_SQL_STATEMENT(del_stmt, "DELETE FROM astdb WHERE key=?") DEFINE_SQL_STATEMENT(deltree_stmt, "DELETE FROM astdb WHERE key || '/' LIKE ? || '/' || '%'")