首页
学习
活动
专区
圈层
工具
发布

mysql 执行sql历史

基础概念

MySQL 执行 SQL 历史指的是记录 MySQL 数据库服务器上执行的 SQL 语句的历史记录。这些记录可以帮助开发人员和数据库管理员了解数据库的使用情况、诊断问题以及优化性能。

相关优势

  1. 故障排查:通过查看 SQL 历史记录,可以快速定位导致问题的 SQL 语句。
  2. 性能优化:分析历史 SQL 语句的执行情况,可以发现性能瓶颈并进行优化。
  3. 审计和安全:记录 SQL 执行历史有助于审计数据库操作,确保数据安全。

类型

  1. 慢查询日志:记录执行时间超过设定阈值的 SQL 语句。
  2. 通用查询日志:记录所有执行的 SQL 语句,无论执行时间长短。
  3. 二进制日志:记录对数据库进行更改的 SQL 语句,主要用于数据恢复和复制。

应用场景

  • 开发环境:在开发过程中,通过查看 SQL 历史记录,可以了解开发人员的查询习惯,优化数据库设计。
  • 生产环境:在生产环境中,通过慢查询日志可以发现并优化性能瓶颈,提高数据库响应速度。
  • 安全审计:通过通用查询日志和二进制日志,可以进行安全审计,确保数据库操作符合规定。

遇到的问题及解决方法

问题:MySQL 执行 SQL 历史记录不完整或不准确

原因

  1. 日志配置不正确:可能没有正确配置慢查询日志、通用查询日志或二进制日志。
  2. 磁盘空间不足:日志文件占用的磁盘空间不足,导致日志被覆盖或停止写入。
  3. 权限问题:当前用户没有足够的权限来查看或写入日志文件。

解决方法

  1. 检查日志配置
    • 确保在 MySQL 配置文件(通常是 my.cnfmy.ini)中正确配置了日志选项。例如:
    • 确保在 MySQL 配置文件(通常是 my.cnfmy.ini)中正确配置了日志选项。例如:
    • 重启 MySQL 服务以应用配置更改。
    • 重启 MySQL 服务以应用配置更改。
  • 检查磁盘空间
    • 使用 df -h 命令检查磁盘空间使用情况。
    • 清理不必要的文件或增加磁盘空间。
  • 检查权限
    • 确保 MySQL 用户有足够的权限来写入日志文件。可以使用以下命令更改文件权限:
    • 确保 MySQL 用户有足够的权限来写入日志文件。可以使用以下命令更改文件权限:

参考链接

通过以上信息,您可以更好地理解 MySQL 执行 SQL 历史记录的相关概念、优势、类型和应用场景,并解决常见的配置和权限问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql查看执行过的历史sql语句

C端产品更新需同步到B端,2)B端订单需要同步到一套ERP系统;3)订单管理、财务结算、物流配置需要全部在erp中实现;为了提交开发效率,打算用最传统的方法:通过在被同步端按人工录入一次数据,记录一次执行...sql语句,即方便、快捷、实用而且还准确,同时也能监控是否有其它未知问题。...查看mysql日志状态,日志路径show variables like 'general_log%'开启日志记录:set GLOBAL general_log=on关闭日志记录set GLOBAL general_log...=off本人开发环境是5.7,其它版本暂未测试,是否有效请自行测试,详情可以参考mysql官网有关“通用查询日志”https://dev.mysql.com/doc/refman/8.0/en/query-log.html

1.7K10
  • 【QMonitor新特性】SQL性能历史跟踪及SQL执行计划变更历史

    是因为容量问题还是执行计划问题? 对于这些问题的回答,就是要获取SQL的性能历史。这个要求也是我们在为很多大型运营商客户做优化之前需要完成的工作。...SQL性能历史跟踪是针对单个SQL,跟踪其随着时间变化的性能执行情况,对于优化项目而言,可以直观看出SQL优化后的效果,计算性能优化比例。...图一:找到需要跟踪性能历史的SQL ? 图二:在SQL性能跟踪页查看其优化情况 功能二:SQL执行计划的变更历史 此功能和SQL性能历史有交集,但是不完全相同。...在绝大部分情况下,SQL执行计划的变化会导致SQL性能的变化,但是反过来就不是如此。SQL的性能历史在每个快照之间可能都有差异,但是执行计划的变更一般是很少的。...SQL执行计划的变更历史能获得每次执行计划的变更时间,这个功能曾经帮助我们在客户现场发现了难题,客户的某些SQL的执行计划总会周期性的变成全表扫描,最后发现是客户DBA不正确的统计信息收集和数据清理的顺序所导致的

    1.2K50

    Mysql-SQL执行顺序

    SQL的执行顺序事实上,sql并不是按照我们的书写顺序来从前往后、左往右依次执行的,它是按照固定的顺序解析的,主要的作用就是从上一个阶段的执行返回结果来提供给下一阶段使用,sql在执行的过程中会有不同的临时中间表...t.mobile having count(*)>2  order by s.create_time limit 5;1、from 第一步就是选择出from关键词后面跟的表,这也是sql...执行的第一步:表示要从数据库中执行哪张表。...通过from 和 join on 选择出需要执行的数据库表T和S,产生笛卡尔积,生成T和S合并的临时中间表Temp1。...实例说明:在temp7中排好序的数据,然后取前五条插入到Temp9这个临时表中,最终返回给客户端ps:实际上这个过程也并不是绝对这样的,中间mysql会有部分的优化以达到最佳的优化效果,比如在select

    1.9K10

    MySQL 8.0 SQL 执行流程

    MySQL 8.0 SQL 执行流程首先我们先来看下 MySQL 的经典架构图,8.0 的没怎么翻到,先看看这个了。...Optimzer优化器,将 SQL 进行优化生成多个执行计划。执行器上面优化器生成了多份执行计划后,接下来就由执行器选择一份计划执行了。...执行器先会判断当前是否具有权限,然后才会去执行相应的 SQL 语句。Caches缓存命中,8.0 中已经被干掉了。...比如他是将 SQL 语句作为 key 进行命中匹配的,如果 SQL 中多加了一个空格也会被认为不是同一条 SQL 导致匹配不到。Pluggable storage Engines数据库的执行引擎插件。...文件系统这个是存放 MySQL 的文件系统。SQL 执行流程SQL 流程是 SQL --> 解析器 --> 优化器 --> 执行器 --> 返回结果。下面会将各个组件单独拉出来做分析。

    89440

    Mysql资料 查询SQL执行顺序

    具体顺序 1.FROM 执行笛卡尔积 FROM 才是 SQL 语句执行的第一步,并非 SELECT 。对FROM子句中的前两个表执行笛卡尔积(交叉联接),生成虚拟表VT1,获取不同数据源的数据集。...如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1~3,直到处理完所有的表为止。 4.WHERE 应用WEHRE过滤器 对虚拟表 VT3应用WHERE筛选器。...SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。...HAVING 语句在SQL中的主要作用与WHERE语句作用是相同的,但是HAVING是过滤聚合值,在 SQL 中增加 HAVING 子句原因就是,WHERE 关键字无法与聚合函数一起使用,HAVING子句主要和...同时,ORDER BY子句的执行顺序为从左到右排序,是非常消耗资源的。 12.LIMIT/OFFSET 指定返回行 从VC10的开始处选择指定数量行,生成虚拟表 VT11,并返回调用者。

    4.8K00

    MySQL执行sql语句的机制

    目录 1 概念 2 执行过程 1 概念 连接器: 身份认证和权限相关(登录 MySQL 的时候)。...查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。...分析器: 没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了就是要先看你的 SQL 语句要干嘛,再检查你的 SQL 语句语法是否正确。...第二步,语法分析,主要就是判断你输入的 sql 是否正确,是否符合 MySQL 的语法。 优化器: 按照 MySQL 认为最优的方案去执行。 执行器: 执行语句,然后从存储引擎返回数据。...SQL 等执行过程分为两类, 一类对于查询等过程如下:权限校验—-》查询缓存—-》分析器—-》优化器—-》权限校验—-》执行器—-》引擎 对于更新等语句执行流程如下:分析器——》权限校验——》6267

    5.1K30

    MySQL执行SQL语句过程详解

    开发人员基本都知道,我们的数据存在数据库中(目前最多的是MySQL和Oracle,由于作者更擅长MySQL,所以这里默认数据库为MySQL),服务器通过sql语句将查询数据的请求传入到MySQL数据库。...流程概述   MySQL得到sql语句后,大概流程如下:   1.sql的解析器:负责解析和转发sql   2.预处理器:对解析后的sql树进行验证   3.查询优化器:得到一个执行计划   4.查询执行引擎...MySQL没有rbo优化器)   这些规则是硬编码在数据库的代码中的。rbo会根据输入的sql语句可以匹配到的优先级最高的规则去作为执行计划。例如:在rbo中有这么一条规则:有索引的情况下,使用索引。...1.查询优化器使用统计信息为sql选择执行计划。   2.MySQL没有数据直方图,也无法手工删除统计信息。(oracle有)   3.在服务器曾有查询优化器,却没有保存数据和索引统计信息。...+返回数据给客户端   得到执行计划后,根据已有的执行计划,查询执行引擎,MySQL的SQL Layer层,调用Storage Engine Layer层的接口,从MySQL的存储引擎中获取到相对应的结果集

    4.9K20

    Mysql中sql执行如此慢

    我们发现sql语句很长时间都不见返回响应,我们先看一下他的状态,发现果然是被锁住了. ? 此类问题我们直接可以找到谁持有MDL的写锁,直接kill....可以用查询sys.schema_table_lock_waits这张表,我们就可以直接找到阻塞的process id ,把这个连接用kill命令断开即可(mysql启动的时候设置performation_schema...等待行锁 首先,我们看看下面sql语句 mysql> select * from t where id=1 lock in share mode; 要执行上面语句的时候,这个记录就会要加读锁,如果这个时候已经有一个事物在这行记录上持有一个写锁...这个问题并并不难分析,问题是如何查出谁占着这个写锁,如果你用的mysql5.7,可以使用下面语句 mysql> select * from t sys.innodb_lock_waits where...我们发现lock in share mode加锁操作居然时间比没有加锁的查询块了,超出了我们的预期,我们再看看每个sql查询结果 ?

    2.2K30

    MySQL架构与SQL执行流程

    MySQL架构设计 下面是一张MySQL的架构图: ?...包括线程的创建,线程的 cache 等 SQL Interface:SQL接口 接受用户的SQL命令,并且返回用户需要查询的结果。...SQL语句执行流程 连接 客户端发来一条SQL语句,监听客户端的‘连接管理模块’接收请求 将请求转发到‘连接进/线程模块’ 调用‘用户模块’来进行授权检查 通过检查后,‘连接进/线程模块’从‘线程连接池...‘命令解析器’,经过词法分析,语法分析后生成解析树 接下来是预处理阶段,处理解析器无法解决的语义,检查权限等,生成新的解析树 再转交给对应的模块处理 如果是查询还会经由‘查询优化器’做大量的优化,生成执行计划...执行完成后,将结果集返回给‘连接进/线程模块’ 返回的也可以是相应的状态标识,如成功或失败等 连接进/线程模块’进行后续的清理工作,并继续等待请求或断开与客户端的连接

    2.1K30

    Oracle 历史SQL语句执行计划的对比与分析

    对于此情形,我们可以比对SQL语句的历史执行计划进行分析是何种原因导致SQL变慢或执行计划发生变化。下面通过例子来模拟SQL执行计划变异的情形。...--查看SQL的历史执行计划 scott@SYBO2SZ> @sql_plan_disp_awr Enter value for input_sqlid: 4hqyjwh7861tp PLAN_TABLE_OUTPUT...查看sql语句的执行计划 --该视图记录了所有被awr快照捕获的所有历史sql的执行计划以及执行计划的生成时间 scott@SYBO2SZ> run sql_plan_his 1 SELECT id...SQL语句,需要执行snapshot之后,才会被填充到DBA_HIST_SQL_PLAN、DBA_HIST_SQLSTAT、DBA_HIST_SNAPSHOT数据字典中 d、如果你的测试无法获得历史SQL...语句及其执行计划,通常是由于awr阀值设置所致,可参考:Oracle AWR 阙值影响历史执行计划 e、历史SQL语句的执行计划也可以通过$ORACLE_HOME/rdbms/admin/awrsqrpt.sql

    1.6K10

    MySQL- SQL执行计划 & 统计SQL执行每阶段的耗时

    ---- 某些SQL查询为什么慢 要弄清楚这个问题,需要知道MySQL处理SQL请求的过程, 我们来看下 MySQL处理SQL请求的过程 客户端将SQL请求发送给服务器 服务器检查是否在缓存中是否命中该...SQL,未命中的话进入下一步 服务器进行SQL解析、预处理,再由优化器生成对应的执行计划 根据执行计划来,调用存储引擎API来查询数据 将结果返回给客户端 ---- 查询缓存对SQL性能的影响 query_cache_type...预处理及生成执行计划 接着上一步说,查询缓存未启用,或者 未命中查询缓存 , 服务器进行SQL解析、预处理,再由优化器生成对应的执行计划 。...MySQL会依赖这个执行计划和存储引擎进行交互 . 包括以下过程 语法解析: 包含语法等解析校验 预处理 : 检查语法是否合法等 执行计划: 上面都通过了,会生成执行计划。...---- 造成MySQL生成错误的执行计划的原因 存储引擎提供的统计信息不准确 执行计划中的估算不等同于实际的执行计划的成本 MySQL不考虑并发的查询 MySQL有时候会基于一些特定的规则来生成执行计划

    3.8K20
    领券