data manipulation language See DML.  A database system or application that primarily runs large  queries . The read-only or read-mostly data might be organized in  denormalized  form for query efficiency. Can benefit from the optimizations for  read-only transactions  in MySQL 5.6 and higher. Contrast with  OLTP . See Also denormalized, OLTP, query, read-only transaction.  Within the MySQL  data directory , each database is represented by a separate directory. The InnoDB  system tablespace , which can hold table data from multiple databases within a MySQL  instance , is kept in  data files that reside outside of individual database directories. When  file-per-table  mode is enabled, the  .ibd files representing individual InnoDB tables are stored inside the database directories unless created elsewhere using the  DATA DIRECTORY  clause. General tablespaces, introduced in MySQL 5.7.6, also hold table data in  .ibd files . Unlike file-per-table  .ibd files , general tablespace  .ibd files  can hold table data from multiple databases within a MySQL  instance , and can be assigned to directories relative to or independent of the MySQL data directory. For long-time MySQL users, a database is a familiar notion. Users coming from an Oracle Database background may find that the MySQL meaning of a database is closer to what Oracle Database calls a  schema . See Also data files, file-per-table, .ibd file, instance, schema, system tablespace.  Data control language, a set of  SQL  statements for managing privileges. In MySQL, consists of the  GRANT  and REVOKE  statements. Contrast with  DDL  and  DML . See Also DDL, DML, SQL.  A feature that lets you use the data design tools within  Visual Studio  to manipulate the schema and objects within a MySQL database. For MySQL applications using  Connector/NET , the MySQL Visual Studio Plugin acts as a DDEX provider with MySQL 5.0 and later. See Also Visual Studio.  Data definition language, a set of  SQL  statements for manipulating the database itself rather than individual table rows. Includes all forms of the  CREATE ,  ALTER , and  DROP  statements. Also includes the  TRUNCATE  statement, because it works differently than a  DELETE FROM  table_name  statement, even though the ultimate effect is similar. DDL statements automatically  commit  the current  transaction ; they cannot be  rolled back . The  InnoDB  online DDL feature enhances performance for  CREATE INDEX ,  DROP INDEX , and many types of ALTER TABLE  operations. See Section 15.12, “InnoDB and Online DDL”  for more information. Also, the  InnoDB file-per-table setting can affect the behavior of  DROP TABLE  and  TRUNCATE TABLE  operations. Contrast with  DML  and  DCL . See Also commit, DCL, DML, file-per-table, rollback, SQL, transaction.  A situation where different  transactions  are unable to proceed, because each holds a  lock  that the other needs. Because both transactions are waiting for a resource to become available, neither one ever releases the locks it holds. A deadlock can occur when the transactions lock rows in multiple tables (through statements such as  UPDATE or  SELECT ... FOR UPDATE ), but in the opposite order. A deadlock can also occur when such statements 6146 deadlock DDL DDEX provider DCL database data warehouse