summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMichael L. Young <elgueromexicano@gmail.com>2014-07-22 18:56:00 +0000
committerMichael L. Young <elgueromexicano@gmail.com>2014-07-22 18:56:00 +0000
commitb4a681684d2fee800add540ede399bf45915fe49 (patch)
tree7435cab7ec150c952f79206e43fc4a10d016ef5d /include
parent197f06bed16cf1babf18a1c611b99ff98aa559e4 (diff)
core/db: Improve I/O When Updating Rows
When updating a row, we are currently doing an INSERT OR REPLACE INTO. The downside to this is that the row is deleted if it exists and then a new row is inserted. So, we are hitting the disk twice. One for the deletion and one for the insertion. This patch changes this statement to an INSERT INTO and if the insert fails because a row with that key exists, we will IGNORE the failure. Then we will attempt to perform an UPDATE on the existing row if that row wasn't just INSERTed. ASTERISK-24050 #close Reported by: Michael L. Young patches: astdb-insert-update-io-help_trunk_v2.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/3815/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419222 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include')
-rw-r--r--include/asterisk/astdb.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/asterisk/astdb.h b/include/asterisk/astdb.h
index 8a870ae83..1eff7908c 100644
--- a/include/asterisk/astdb.h
+++ b/include/asterisk/astdb.h
@@ -50,7 +50,14 @@ 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 */
+/*! \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.
+ */
int ast_db_put(const char *family, const char *key, const char *value);
/*! \brief Delete entry in astdb */