N .NET native C API natural key neighbor page next-key lock non-locking read non-repeatable read See Also ADO.NET, ASP.net, Connector/NET, Mono, Visual Studio.  Synonym for  libmysqlclient . See Also libmysql.  An indexed column, typically a  primary key , where the values have some real-world significance. Usually advised against because: •If the value should ever change, there is potentially a lot of index maintenance to re-sort the  clustered index and update the copies of the primary key value that are repeated in each  secondary index . •Even seemingly stable values can change in unpredictable ways that are difficult to represent correctly in the database. For example, one country can change into two or several, making the original country code obsolete. Or, rules about unique values might have exceptions. For example, even if taxpayer IDs are intended to be unique to a single person, a database might have to handle records that violate that rule, such as in cases of identity theft. Taxpayer IDs and other sensitive ID numbers also make poor primary keys, because they may need to be secured, encrypted, and otherwise treated differently than other columns. Thus, it is typically better to use arbitrary numeric values to form a  synthetic key , for example using an  auto- increment  column. See Also auto-increment, clustered index, primary key, secondary index, synthetic key.  Any  page  in the same  extent  as a particular page. When a page is selected to be  flushed , any neighbor pages that are  dirty  are typically flushed as well, as an I/O optimization for traditional hard disks. In MySQL 5.6 and up, this behavior can be controlled by the configuration variable  innodb_flush_neighbors ; you might turn that setting off for SSD drives, which do not have the same overhead for writing smaller batches of data at random locations. See Also dirty page, extent, flush, page.  A  query  that does not use the  SELECT ... FOR UPDATE  or  SELECT ... LOCK IN SHARE MODE  clauses. The only kind of query allowed for global tables in a  read-only transaction . The opposite of a  locking read . See Section 15.7.2.3, “Consistent Nonlocking Reads” .  A combination of a  record lock  on the index record and a gap lock on the gap before the index record. See Also gap lock, locking, record lock. SELECT ... FOR SHARE  replaces  SELECT ... LOCK IN SHARE MODE  in MySQL 8.0.1, but  LOCK IN SHARE MODE  remains available for backward compatibility. See Also locking read, query, read-only transaction.  The situation when a query retrieves data, and a later query within the same  transaction  retrieves what should be the same data, but the queries return different results (changed by another transaction committing in the meantime). This kind of operation goes against the  ACID  principle of database design. Within a transaction, data should be consistent, with predictable and stable relationships. 6170