查询优先还是更新(insert、update、delete)优先:
MySQL 还允许改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样单个客户端就不会由于锁定而等待很长时间。改变优先级还可以确保特定类型的查询被处理得更快。
我们首先应该确定应用的类型,判断应用是以查询为主还是以更新为主的,是确保查询效率还是确保更新的效率,决定是查询优先还是更新优先。
下面我们提到的改变调度策略的方法主要是针对Myisam 存储引擎的,对于Innodb 存储引擎,语句的执行是由获得行锁的顺序决定的。
MySQL 的默认的调度策略可用总结如下:
1. 写入操作优先于读取操作。
2. 对某张数据表的写入操作某一时刻只能发生一次,写入请求按照它们到达的次序来处理。
3. 对某张数据表的多个读取操作可以同时地进行。
MySQL 提供了几个语句调节符,允许你修改它的调度策略:
1. LOW_PRIORITY关键字应用于DELETE、INSERT、LOAD DATA、REPLACE和UPDATE。
2. HIGH_PRIORITY关键字应用于SELECT和INSERT语句。
3. DELAYED关键字应用于INSERT和REPLACE语句。
如果写入操作是一个LOW_PRIORITY(低优先级)请求,那么系统就不会认为它的优先级高于读取操作。在这种情况下,如果写入者在等待的时候,第二个读取者到达了,那么就允许第二个读取者插到写入者之前。只有在没有其它的读取者的时候,才允许写入者开始操作。这种调度修改可能存在LOW_PRIORITY 写入操作永远被阻塞的情况。
SELECT 查询的HIGH_PRIORITY(高优先级)关键字也类似。它允许SELECT 插入正在等待的写入操作之前,即使在正常情况下写入操作的优先级更高。另外一种影响是,高优先级的SELECT 在正常的SELECT 语句之前执行,因为这些语句会被写入操作阻塞。如果你希望所有支持LOW_PRIORITY 选项的语句都默认地按照低优先级来处理,那么请使用--low-priority-updates 选项来启动服务器。通过使用INSERT HIGH_PRIORITY 来把INSERT 语句提高到正常的写入优先级,可以消除该选项对单个INSERT 语句的影响。
分享到:
相关推荐
MySQL数据库的INSERT、UPDATE、DELETE和REPLACE语句是数据操作语言(DML)的关键组成部分,用于在数据库中创建、修改和删除数据。以下是对这些语句的详细说明: 1. INSERT语句: - INSERT语句用于向数据库表中添加...
例如,先用 `SELECT` 查询特定数据,然后根据结果决定是使用 `INSERT`、`UPDATE` 还是 `DELETE`。同时,为了提高性能,可以使用事务来确保一系列操作的原子性。 在设计数据库时,合理利用主键和唯一索引能有效避免 ...
MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解.doc
在这个场景中,我们关注的是一个名为"Upload-Insert-Update-Delete-Image-PHP-MySQL.rar_msql"的压缩包文件,它显然涉及到使用PHP和MySQL进行基本的CRUD操作,即创建(Create)、读取(Retrieve)、更新(Update)和删除...
首先在数据库中创建存储过程和方法,然后调用创建好的存储过程,生成带有与表名及字段相关的insert,update,delete语句,变量与表字段名相同,例如: "insert into temp (col1,col2,col3) values ('"+col1+"','"+col2...
MySQL数据库中的INSERT、UPDATE、DELETE和REPLACE语句是数据操作语言(DML)的核心,它们用于在数据库中创建、修改和删除数据。下面将详细解释这些语句的使用方法。 1. INSERT语句: - 基本用法:INSERT INTO `...
实验中,学生将学习使用 Insert 语句进行数据插入、Delete 语句删除数据、TRUNCATE TABLE 语句清空表数据、Update 语句修改数据。 1. 数据插入操作 在实验中,学生将学习使用 Insert 语句插入数据,包括单记录插入...
MySQL触发器是一种数据库对象,它允许在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。在这个场景中,开发者尝试创建一个UPDATE触发器,当`triggletest_triggle`表中的数据被更新时...
## SQL结构化查询语言,是对关系型数据库进行操作、管理的语言 # DQL数据查询语言 select .......[where|group by|order by|having].... # DML数据操作语言 处理表内的数据 insert update delete # TPL事务...
SQL是Structured Query Language的缩写,是用于管理关系数据库的标准语言。它分为多个类别,包括数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)。以下是对这些基本SQL语句的详细解释: 1. **数据...
my2sql是一个开源工具,可以帮助解析binlog中的DML操作(如INSERT, UPDATE, DELETE),并生成相应的回滚操作(INSERT)。在使用my2sql之前,确保MySQL用户的认证插件是mysql_native_password,以便工具能够正确解析...
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它以其高效、稳定和易于学习的特点在Web开发领域占据了重要地位。本教程将详细介绍如何在MySQL中进行数据的添加、更新和删除操作,以及如何利用MySQL...
一、查询优先还是更新(insert、update、delete)优先 MySQL 还允许改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样单个客户端就不会由于锁定而等待很长时间。改变优先级还可以确保特定类型的...
在本实验训练中,主要涉及的是关系型数据库管理系统MySQL中的数据操作,包括数据的增加(Insert)、删除(Delete)和修改(Update),这些都是数据库管理的基础且重要的操作。实验旨在加深对这些SQL语句的理解和应用...
子查询可以出现在SELECT、INSERT、UPDATE或DELETE语句中,通常用于返回一个结果集,该结果集可以作为外部查询的一部分进行进一步处理. 嵌套查询可以非常强大,但它们也可能影响查询性能,特别是当子查询包含复杂的...
MySQL 表数据操作(DML)语法是 MySQL 中最重要的语法之一,它包括 insert、update 和 delete 三种操作。下面我们将详细介绍每种操作的语法和示例。 insert 操作 insert 操作用于向表中添加新记录。insert 语法有...
首先,基础的SQL查询语句包括SELECT、INSERT、UPDATE、DELETE四大命令。SELECT用于获取数据,INSERT用于添加新记录,UPDATE用于修改现有记录,而DELETE则用于删除记录。在MySQL中,这些语句可以与WHERE子句结合,以...
用户可以方便地运行各种查询,包括SELECT、INSERT、UPDATE、DELETE以及复杂的JOIN和子查询。 2. **数据库设计与建模**:通过该分析器,用户可以创建、修改和删除数据库表结构,设置索引和外键关系。此外,它还支持...