[
https://jira.jboss.org/browse/ISPN-686?page=com.atlassian.jira.plugin.sys...
]
Trustin Lee commented on ISPN-686:
----------------------------------
Infinispan already has an abstraction called TableManipulation which is basically a
factory of SQL strings. I think we can add TableManipulation.getInsertOrUpdateRowSql().
The default implementation could return null (i.e. no proprietary extension), and a user
could override it.
Another possible optimization is to attempt an UPDATE first instead of SELECT. If the
number of updated rows is 0, we can execute an INSERT. Assuming UPDATE is more common
than INSERT, we save one statement.
WDYT? (Just making sure because I'm not sure I'm so familiar with the codebase
yet :)
JdbcStringBasedCacheStore loads previous data from store before an
insert
-------------------------------------------------------------------------
Key: ISPN-686
URL:
https://jira.jboss.org/browse/ISPN-686
Project: Infinispan
Issue Type: Bug
Components: Loaders and Stores
Affects Versions: 4.0.0.Final, 4.1.0.Final, 4.2.0.ALPHA2
Reporter: Sanne Grinovero
Assignee: Trustin Lee
Fix For: 4.2.0.BETA1, 4.2.0.Final, 5.0.0.Final
The JdbcStringBasedCacheStore implementation loads the previous data on an insert to find
out if it should generate an UPDATE or INSERT statement, while it would perform much
better to just verify if the primary key exists.
On top of this, some databases provide ways to avoid the need to check at all, like
MySQL's " INSERT ... ON DUPLICATE KEY UPDATE"
[
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html]
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira