Improving concurrency with lockless reads (peeks)
Prior to Release 2013.3, commands that only read data from the database take a read-lock on one (or more) database tables. Although other commands can read from the tables at the same time, any commands attempting to write to the read-locked tables are forced to wait for the read-lock to complete before writing could begin. Currently, the default behavior is to allow some commands to perform lock-free reads (or "peeks") on these tables, without sacrificing consistency or isolation. This provides significant performance improvement by ensuring that write operations on these tables can run immediately, rather than being held until the read-lock is released.
To change the setting of lockless reads on your
Helix Core Server, use the
p4 configure set db.peeking=N
command.
db.peeking is a dynamic configurable, but prior to the 2017.1 release, a change to the value of this configurable required a server restart.
Possible values for db.peeking
Value | Meaning |
---|---|
|
If This corresponds to the behavior of Helix Server at release 2013.2 and below. |
|
If This configuration is intended primarily for diagnostic purposes. |
|
If This configuration is expected to provide the best performance results for most sites. It is the default value. |
|
If This configuration involves a trade-off between concurrency and
command completion speed; in general, if a repository has many
revisions per file, then some commands will complete more slowly
with |