等待事件记录表包含三张表,这些表记录了当前与最近在MySQL实例中发生了哪些等待事件,时间消耗是多少。...如果instruments配置表setup_instruments中对应的instruments 的TIMED字段被设置为 NO,则该instruments禁用时间收集功能,那么事件采集的信息记录中,TIMER_START...如果该行事件是与SQL语句无关的command事件,则该列值为NULL。默认情况下,语句最大显示长度为1024字节。...如果要修改,则在server启动之前设置系统变量performance_schema_max_sql_text_length的值 DIGEST:语句摘要的MD5 hash值,为32位十六进制字符串,如果在...、会话级别 NO_INDEX_USED:如果语句执行表扫描而不使用索引,则该列值为1,否则为0 NO_GOOD_INDEX_USED:如果服务器找不到用于该语句的合适索引,则该列值为1,否则为0 NESTING_EVENT_ID
约束名称可以是任何有效的标识符; 如果指定为分隔符,则约束名可以包含".", "^", ",", "->"字符。 ALTER TABLE无法删除约束UNIQUE中列出的列。...该表定义了显式IDKEY索引。 该表包含定义的标识字段,该字段没有MINVAL=1。...如果未定义标识字段,LAST_IDENTITY将返回最近修改的记录的RowID值。...如果指定逗号分隔的字段列表,则每个字段都被定义为非NULL,但只要字段值的组合是唯一值,就可以包含重复值。...请注意,这会对主键的未来使用施加IDKEY限制。 如果向现有字段添加主键约束,则该字段还可能自动定义为IDKEY索引。
timestamp这个类型的字段呢,每增加一条记录时,它会在最近的一个时间戳基础上自动增加,当修改某条记录时,它也会在最近的一个时间戳基础上自动增加,所以我们就知道哪些记录修改过了。...对行的任何更新都会更改 timestamp 值,从而更改键值。如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。...如果该列属于索引键,则对数据行的所有更新还将导致索引更新。 不可为空的 timestamp 列在语义上等价于 binary(8) 列。...对行的任何更新都会更改 timestamp 值,从而更改键值。如果该列属于主键,那么旧的键值将无效,进而引用该旧值的外键也将不再有效。 如果该表在动态游标中引用,则所有更新均会更改游标中行的位置。...如果该列属于索引键,则对数据行的所有更新还将导致索引更新。 使用某一行中的 timestamp 列可以很容易地确定该行中的任何值自上次读取以后是否发生了更改。如果对行进行了更改,就会更新该时间戳值。
或者在执行查询之后运行show profile或者show profile all命令直接显示最近一条sql的各种消耗。...如果设置为NO,则这个instruments不会被执行,不会产生任何的事件信息 TIMED:instruments是否收集时间信息,有效值为YES或NO,此列可以使用UPDATE语句修改,如果设置为...server线程生成一行包含线程相关的信息, 字段解释: THREAD_ID:线程的唯一标识符(ID) NAME:与server中的线程检测代码相关联的名称(注意,这里不是instruments...PROCESSLIST_DB:线程的默认数据库,如果没有,则为NULL。...PROCESSLIST_COMMAND:对于前台线程,该值代表着当前客户端正在执行的command类型,如果是sleep则表示当前会话处于空闲状态 PROCESSLIST_TIME:当前线程已处于当前线程状态的持续时间
并非所有存储引擎都会更新此时间,如果不检测表,则值始终为NULL,注意:分区表的记录中该字段总是为NULL TABLE_COLLATION:表的字符集和排序规则 CHECKSUM:实时校验和值(如果表有使用值校验和功能...如果自存储程序创建以来从未修改过,则该列值与CREATED列值相同 SQL_MODE:表示创建或修改存储程序时MySQL Server的sql_mode值(该字段为 "MySQL extension"...如果事件的计时由EVERY子句而不是AT子句确定(则表示该事件是一个重复事件),则此列的值为NULL。 INTERVAL_VALUE:对于重复事件,此列包含事件的EVERY子句中的数字部分。...SQL_MODE:创建或更改事件时MySQL Server的SQL模式 STARTS:对于其定义中包含STARTS子句的重复事件,此列包含相应的DATETIME值。...如果没有STARTS子句,则此列为NULL ENDS:对于其定义中包含ENDS子句的重复事件,此列包含相应的DATETIME值。
该表中的信息在SQL开始执行时就会进行记录,而不是等待SQL执行结束才记录。 下面是该表中存储的信息内容。...如果启用了查询日志,则Server重新启动的时候会重新打开查询日志文件,如果查询日志存在,则直接重新打开,如果查询日志不存在,则重新创建,如果需要再Server运行时动态归档查询日志,则可以按照如下命令操作...默认情况下,在Server中执行的语句如果带了用户密码,会被Server重写该语句之后再写入到查询日志中,如果需要记录明文密码,则需要使用--low-raw选项启动Server(使用该选项会绕过密码重写功能...慢查询日志包含了执行时间超过long_query_time系统变量设置的秒数的SQL语句,并且包含了需要检查行数超过min_examined_row_limit系统变量设置的值的SQL语句(默认情况下该变量为...如果min_examined_row_limit变量设置非零值,则判断语句的检查行数是否超过该变量设置的值,如果超过则计入慢查询,如果未超过则不记录慢查询。
2)隐式定义 如果不显示定义事务的边界,则SQL Server会默认把每个单独的语句作为一个事务,即在执行完每个语句之后就会自动提交事务。...3.排他锁和共享锁的兼容性 (1)如果数据正在由一个事务进行修改,则其他事务既不能修改该数据,也不能读取(至少默认不能)该数据,直到第一个事务完成。...(2)如果数据正在由一个事务读取,则其他事务不能修改该数据(至少默认不能)。...例如单个语句获得至少5000个锁,就会触发锁升级,如果由于锁冲突而导致无法升级锁,则SQL Server每当获取1250个新锁时出发锁升级。...(4)会话所使用的SQL Server登录名login_name (5)最近一次会话请求的开始时间last_request_start_time (6)最近一次会话请求的完成时间last_request_end_time
SQL NOT NULL 约束SQL NOT NULL 约束用于强制确保列不接受 NULL 值。这意味着该字段始终包含一个值,而不允许插入新记录或更新记录时不提供此字段的值。...int NOT NULL;通过这些 SQL 语句,您可以确保指定列不会包含 NULL 值,从而增强数据的完整性。...SQL PRIMARY KEY 约束SQL PRIMARY KEY 约束唯一标识表中的每条记录。主键必须包含唯一的值,并且不能包含 NULL 值。...);注意: 如果使用 ALTER TABLE 添加主键,则主键列必须在创建表时声明为不包含 NULL 值。...最后为了方便其他设备和平台的小伙伴观看往期文章:微信公众号搜索:Let us Coding,关注后即可获取最新文章推送看完如果觉得有帮助,欢迎 点赞、收藏、关注
它包含类似于真实表的行和列。视图中的字段是来自一个或多个实际表的字段。 视图不包含自己的数据。它们用于限制对数据库的访问或隐藏数据复杂性。 21.视图的优点是什么?...假设表中有一个字段是可选的,并且可以在不向可选字段添加值的情况下插入记录 则该字段将以NULL值保存。 46. NULL值,零和空白之间有什么区别?...如果未与交叉联接一起使用WHERE子句,则交叉联接将产生一个结果集 该结果集是第一个表中的行数乘以第二个表中的行数。 这种结果称为笛卡尔积。...该查询将返回“ SQL Server中的查询”。...如果在下面的语句中运行,则结果为NULL SELECT col1 * (col2 + col3) FROM Table1 假设col3中的任何值为NULL,那么正如我所说的,您的结果将为NULL
,如果是MGR集群,则记录组复制从节点的延迟复制配置参数),该表中的记录在Server运行时可以使用CHANGE MASTER TO语句进行更改,我们先来看看表中记录的统计信息是什么样子的。...4. replication_applier_status_by_worker表 如果从库是单线程,则该表记录一条WORKER_ID=0的SQL线程的状态。...如果需要在某个会话中查询其他会话的状态变量值可以查询此表(注意:该表不包含只具有全局级别的状态变量),只记录活跃会话,不记录中断的会话 我们先来看看表中记录的统计信息是什么样子的。...的客户端的IP地址,以字符串形式记录 HOST:该客户端IP解析的DNS主机名,如果没有计息记录,则该字段为NULL HOST_VALIDATED:某个IP的客户端的'IP-主机名称-IP'的解析是否成功...PS:如果启动选项 skip_name_resolve 设置为ON,则该表不记录任何信息,因为该表的作用就是用于避免、加速域名解析用于,跳过域名解析功能时则该表记录的信息用途不大。
如果Last_Error值不是空值,它也会在从服务器的错误日志中作为消息显示。 Skip_Counter 最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值。...如果从属服务器正在读取,直到达到主服务器的二进制日志的给定位置为止,则值为Master,如果从属服务器正在读取,直到达到其中继日志的给定位置为止,则值为Relay。...如果允许对主服务器进行SSL连接,则值为Yes;如果不允许对主服务器进行SSL连接,则值为No;如果允许SSL连接,但是从服务器没有让SSL支持被启用,则值为Ignored。...如果主节点和从服务器之间的网络连接速度较快,则Slave i/o线程非常接近主服务器,因此此字段是对从SQL线程与主服务器进行比较的后的一个很好的近似值。...Last_IO_Error_Timestamp 记录最近IO线程错误的时间戳。 Last_SQL_Error_Timestamp 记录最近SQL线程错误的时间戳。
port:MySQL服务器的端口号,默认为3306。 – 返回值:如果连接成功,则返回 mysqli 连接对象。如果失败,则返回 false。 实例代码一 <?...,如果没有更多行则返回 FALSE。...,如果没有更多行则返回 FALSE。...取得前一次 MySQL 操作所影响的记录行数 mysqli_affected_rows ( mysqliLink ) – 说明:取得最近一次与 $link 关联的 SELECT、INSERT、UPDATE...– 注意:如果最近一次查询失败,函数返回-1。当使用UPDATE查询,MySQL不会将原值和新值一样的值更新,返回值不一定就是查询条件所符合的记录,只有修改过的记录数才会被返回。
在setup_timers表中可以使用performance_timers表中列值不为null的计时器(如果performance_timers表中有某字段值为NULL,则表示该定时器可能不支持当前server...如果用户线程在创建时在该表中没有匹配到User,Host列,则该线程的INSTRUMENTED和HISTORY列将设置为NO,表示不对这个线程进行监控,不记录该线程的历史事件信息。...,另外一个表不启用) (7)threads表 threads表对于每个server线程生成一行包含线程相关的信息,例如:显示是否启用监视,是否启用历史事件记录功能,如下: admin@localhost...分别表示前台线程和后台线程,如果是用户创建的连接或者是复制线程创建的连接,则标记为前台线程(如:复制IO和SQL线程,worker线程,dump线程等),如果是server内部创建的线程(不能用户干预的线程...另外,threads表中记录了内部线程,而processlist表中没有记录内部线程,所以,对于内部线程,在threads表中的该字段显示为NULL,因此在threads表中NULL值不唯一(可能有多个后台线程
NULLABLE:表示该字段是否包含NULL和空值,如果有,则该字段值为YES,否则为空。...要注意,索引列只要允许为NULL,则该字段值就为YES NULLABLE:表示该字段是否包含NULL和空值,如果有,则该字段值为YES,否则为空。...,如果是存储过程,则该字段为NULL DTD_IDENTIFIER:如果存储程序为函数,则该字段为返回数据类型的值,如果为存储过程,则该字段为空 CREATED:表示创建存储程序的日期和时间。...SQL_MODE:创建或更改事件时MySQL Server的SQL模式 STARTS:对于其定义中包含STARTS子句的重复事件,此列包含相应的DATETIME值。...如果没有STARTS子句,则此列为NULL ENDS:对于其定义中包含ENDS子句的重复事件,此列包含相应的DATETIME值。
如果sql性能足够好.可能 thread running 极少就可以处理,当 sql 出了问题 running 就会飙升 threads_running 飙高表示server目前压力较大,一般是客户端压力突增...如果 LOCK_TYPE是RECORD,是锁定的记录的主键值,否则NULL。 此列包含锁定行中主键列的值,格式为有效的SQL字符串。如果没有主键,LOCK_DATA则是唯一的InnoDB内部行ID号。...如果对键值或范围高于索引中的最大值的间隙锁定,则LOCK_DATA 报告supremum pseudo-record。...,那么该列实际占用的最大存储空间就是100 × 3 = 300个字节 如果该索引列可以存储NULL值,则key_len比不可以存储NULL值时多1个字节 对于变长字段来说,都会有2个字节的空间来存储该变长列的实际长度...'%a'这个条件,如果这个条件不满足,则该二级索引记录压根儿就没必要回表 对于满足key1 LIKE '%a'这个条件的二级索引记录执行回表操作 回表操作其实是一个随机IO,比较耗时,所以上述修改虽然只改进了一点
如果sql性能足够好.可能 thread running 极少就可以处理,当 sql 出了问题 running 就会飙升 threads_running 飙高表示server目前压力较大,一般是客户端压力突增...LOCK_TYPE 锁的类型 LOCK_TABLE 已锁定或包含锁定记录的表的名称 LOCK_INDEX 索引的名称,如果LOCK_TYPE是 RECORD; 否则NULL LOCK_SPACE 锁定记录的表空间...如果 LOCK_TYPE是RECORD,是锁定的记录的主键值,否则NULL。 此列包含锁定行中主键列的值,格式为有效的SQL字符串。如果没有主键,LOCK_DATA则是唯一的InnoDB内部行ID号。...如果对键值或范围高于索引中的最大值的间隙锁定,则LOCK_DATA 报告supremum pseudo-record。...,那么该列实际占用的最大存储空间就是100 × 3 = 300个字节 如果该索引列可以存储NULL值,则key_len比不可以存储NULL值时多1个字节 对于变长字段来说,都会有2个字节的空间来存储该变长列的实际长度
如果键入的内容有误,编辑器会向您报告这些错误,您可以在保存存储过程之前修正这些错误。 下面是存储过程的一个简单示例,它返回一个主题列表。...它告诉 SQL Server 停止为该查询计算受影响的行数,并停止向调用函数返回该值。这是一项不必要的额外工作。其次,结尾处的 RETURN @@ERROR 一行很重要。...如果传递的代码不正确,则传递返回代码 100 并停止执行该过程。再其次,您会发现检查 @ID 参数,以确保其代表一条现有记录。如果不是现有记录,则传送返回代码 101 并终止执行。...最后,如果输入变量都有效,存储过程将尝试选择记录并返回相应的值。如果此时发生任何错误,将由该过程的最后一行代码进行处理。...因为这只是一个短小的示例,其中只使用了两个错误代码,所以我决定创建一个包含大量代码和消息的文档,以供其他子系统参考。 该解决方案中包含的存储过程超过 25 个。
在标准 SQL 中,包含 GROUP BY 子句的查询 不能引用 select 列表中未在 GROUP BY 子句中命名的列。...STRICT_TRANS_TABLES 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制。...如果未给出该模式,被零除时 MySQL 返回 NULL。如果用到 INSERT IGNORE 或 UPDATE IGNORE 中,MySQL 生成被零除警告,但操作结果为 NULL。...NO_ENGINE_SUBSTITUTION 如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常。...;而开启 STRICT_ALL_TABLES 后,则表现为不写入数据,且抛出错误。
一、触发器 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表 事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发...inserted表: 临时保存了插入或更新后的记录行; 可以从inserted表中检查插入的数据是否满足业务需求; 如果不满足,则向用户发送报告错误消息,并回滚插入操作。...deleted表: 临时保存了删除或更新前的记录行; 可以从deleted表中检查被删除的数据是否满足业务需求; 如果不满足,则向用户报告错误消息,并回滚插入操作。...语句 – with encryption 表示加密触发器定义的sql文本 – delete,insert,update指定触发器的类型 二、事务和锁 事务是SQL Server中单个的逻辑工作单元,...锁是一种防止在某对象执行动作的一个进程与已在该对象上执行的其他进行相冲突的机制。也就是说, 如果有其他人在操作某个对象,那么你旧不能在该对象上进行操作。你能否执行操作取决于其他用户正在进 行的操作。
如果一阶段都成功,则通知所有事务参与者,提交事务 如果一阶段任意一个参与者失败,则通知所有事务参与者回滚事务 4.1.2.Seata的XA模型 Seata对原始的XA模式做了简单的封装和改造,以适应自己的事务模型...,基本架构如图: RM一阶段的工作: ① 注册分支事务到TC ② 执行分支业务sql但不提交 ③ 报告执行状态到TC TC二阶段的工作: TC检测各分支事务执行状态 a.如果都成功,通知所有...4.2.1.Seata的AT模型 基本流程图: 阶段一RM的工作: 注册分支事务 记录undo-log(数据快照) 执行业务sql并提交 报告事务状态 阶段二提交时RM的工作: 删除undo-log即可...此时 money = 90 6)RM报告本地事务状态给TC 二阶段: 1)TM通知TC事务结束 2)TC检查分支事务状态 a)如果都成功,则立即删除快照 b)如果有分支事务失败,需要回滚。...cancel业务中,根据xid查询account_freeze,如果为null则说明try还没做,需要空回滚 如何避免业务悬挂?
领取专属 10元无门槛券
手把手带您无忧上云