The innodb_api_disable_rowlock  option is not dynamic. It must be specified at startup on the mysqld  command line or entered in a MySQL configuration file. 

## Allowing or Disallowing DDL 

By default, you can perform DDL operations such as ALTER TABLE  on tables used by the daemon_memcached  plugin. To avoid potential slowdowns when these tables are used for high-throughput applications, disable DDL operations on these tables by enabling innodb_api_enable_mdl  at startup. This option is less appropriate when accessing the same tables through both memcached  and SQL, because it blocks CREATE INDEX  statements on the tables, which could be important for running reporting queries. 

## Storing Data on Disk, in Memory, or Both 

The innodb_memcache.cache_policies  table specifies whether to store data written through the memcached  interface to disk ( innodb_only , the default); in memory only, as with traditional memcached ( cache_only ); or both ( caching ). 

With the caching  setting, if memcached  cannot find a key in memory, it searches for the value in an InnoDB  table. Values returned from get  calls under the caching  setting could be out-of-date if the values were updated on disk in the InnoDB  table but are not yet expired from the memory cache. 

The caching policy can be set independently for get , set  (including incr  and decr ), delete , and flush  operations. 

For example, you might allow get  and set  operations to query or update a table and the memcached memory cache at the same time (using the caching  setting), while making delete , flush , or both operate only on the in-memory copy (using the cache_only  setting). That way, deleting or flushing an item only expires the item from the cache, and the latest value is returned from the InnoDB  table the next time the item is requested. 

mysql> SELECT * FROM innodb_memcache.cache_policies; +--------------+-------------+-------------+---------------+--------------+ | policy_name | get_policy | set_policy | delete_policy | flush_policy | +--------------+-------------+-------------+---------------+--------------+ | cache_policy | innodb_only | innodb_only | innodb_only | innodb_only | +--------------+-------------+-------------+---------------+--------------+ mysql> UPDATE innodb_memcache.cache_policies SET set_policy = ’caching’ WHERE policy_name = ’cache_policy’; 

innodb_memcache.cache_policies  values are only read at startup. After changing values in this table, uninstall and reinstall the daemon_memcached  plugin to ensure that changes take effect. 

## 15.20.6.5 Adapting DML Statements to memcached Operations 

mysql> UNINSTALL PLUGIN daemon_memcached; mysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so"; 

Benchmarks suggest that the daemon_memcached  plugin speeds up DML operations (inserts, updates, and deletes) more than it speeds up queries. Therefore, consider focussing initial development efforts on write-intensive applications that are I/O-bound, and look for opportunities to use MySQL with the daemon_memcached  plugin for new write-intensive applications. 

Single-row DML statements are the easiest types of statements to turn into memcached  operations. INSERT  becomes add , UPDATE  becomes set , incr  or decr , and DELETE  becomes delete . These operations are guaranteed to only affect one row when issued through the memcached  interface, because the key  is unique within the table. 

