当前位置: 首页 > wzjs >正文

服装网站建设项目规划网站开发费用如何账务处理

服装网站建设项目规划,网站开发费用如何账务处理,设计本哪个牌子笔记本好,云适配 网站在实际工作中,我们常常会遇到各种各样的数据库问题,比如查询性能低下、数据不一致等。为了更好地诊断和解决这些问题,MySQL 提供了丰富的日志功能,其中 general log 和慢查询日志(slowlog)是两个非常重要的…

在实际工作中,我们常常会遇到各种各样的数据库问题,比如查询性能低下、数据不一致等。为了更好地诊断和解决这些问题,MySQL 提供了丰富的日志功能,其中 general log 和慢查询日志(slowlog)是两个非常重要的日志类型。

General log 会记录 MySQL 服务器接收到的所有 SQL 语句,就像一个全面的监控摄像头,不放过任何一个数据库操作。而慢查询日志则专注于记录执行时间超过指定阈值的 SQL 语句,帮助我们定位那些 “拖后腿” 的查询,从而进行针对性的优化。理解这两种日志的记录顺序,不仅有助于我们在生产环境中高效地排查问题,也是面试中经常被问到的高频考点。

1.  准备工作

1.1  环境准备

准备一套MySQL8.0.40的源码编译实例,相关编译环境及基本命令可以参考历史文章准备

MySQL8.0.40编译安装

MySQL源码学习系列(一)-- 环境准备及常用命令

1.2  调整参数

开启慢SQL并设置阈值为1s、开启general log

mysql> set global slow_query_log=1;Query OK, 0 rows affected (0.00 sec)
mysql> set global long_query_time=1;Query OK, 0 rows affected (0.00 sec)
mysql> set global  general_log=1;Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like '%slow%';+-----------------------------+-----------------------------------------------------------------+| Variable_name               | Value                                                           |+-----------------------------+-----------------------------------------------------------------+| log_slow_admin_statements   | OFF                                                             || log_slow_extra              | OFF                                                             || log_slow_replica_statements | OFF                                                             || log_slow_slave_statements   | OFF                                                             || slow_launch_time            | 2                                                               || slow_query_log              | ON                                                              || slow_query_log_file         | /usr/local/mysql-8.0.40/mysql-test/var/mysqld.1/mysqld-slow.log |+-----------------------------+-----------------------------------------------------------------+7 rows in set (0.01 sec)
mysql> show global variables like '%long%';+----------------------------------------------------------+----------+| Variable_name                                            | Value    |+----------------------------------------------------------+----------+| long_query_time                                          | 1.000000 || performance_schema_events_stages_history_long_size       | 1000     || performance_schema_events_statements_history_long_size   | 1000     || performance_schema_events_transactions_history_long_size | 1000     || performance_schema_events_waits_history_long_size        | 10000    |+----------------------------------------------------------+----------+5 rows in set (0.01 sec)
mysql> show global variables like '%general%';+------------------+------------------------------------------------------------+| Variable_name    | Value                                                      |+------------------+------------------------------------------------------------+| general_log      | ON                                                         || general_log_file | /usr/local/mysql-8.0.40/mysql-test/var/mysqld.1/mysqld.log |+------------------+------------------------------------------------------------+2 rows in set (0.02 sec)
mysql>

2.  通过GDB调试确定执行顺序

2.1  选择断点

可以选择几个断点来设置,只是确定三个日志的写入顺序可以选如下断点(其他的也可)

日志类型

源码文件

设置断点

General Log

sql/log.cc

general_log_write

慢查询日志

sql/log.cc

write_slow

SQL语句

sql/sql_parse.cc

mysql_execute_command

2.2  设置断点

启动gdb后设置断点

(gdb) b mysql_execute_commandBreakpoint 1 at 0x5c59b7e80d77: file /usr/local/mysql-8.0.40/sql/sql_parse.cc, line 2946.(gdb) b general_log_writeBreakpoint 2 at 0x5c59b85400c8: file /usr/local/mysql-8.0.40/sql/log.cc, line 1374.(gdb) b write_slowBreakpoint 3 at 0x5c59b853d498: file /usr/local/mysql-8.0.40/sql/log.cc, line 687.(gdb) info b Num     Type           Disp Enb Address            What1       breakpoint     keep y   0x00005c59b7e80d77 in mysql_execute_command(THD*, bool) at /usr/local/mysql-8.0.40/sql/sql_parse.cc:29462       breakpoint     keep y   0x00005c59b85400c8 in Query_logger::general_log_write(THD*, enum_server_command, char const*, unsigned long) at /usr/local/mysql-8.0.40/sql/log.cc:13743       breakpoint     keep y   0x00005c59b853d498 in File_query_log::write_slow(THD*, unsigned long long, unsigned long long, char const*, unsigned long, unsigned long long, unsigned long long, bool, char const*, unsigned long) at /usr/local/mysql-8.0.40/sql/log.cc:687(gdb)

2.3 开始执行SQL调试

在sql里执行一个慢SQL

mysql> select sleep(2);

gdb里命中第一个断点:Query_logger::general_log_write

(gdb) cContinuing.[Switching to Thread 0x7ba3a4fff640 (LWP 32375)]Thread 39 "connection" hit Breakpoint 2, Query_logger::general_log_write (this=0x5c59bd33d140 <query_logger>, thd=0x7ba310001200, command=COM_QUERY, query=0x7ba31002fc90 "select sleep(2)", query_length=15) at /usr/local/mysql-8.0.40/sql/log.cc:13741374	                                     const char *query, size_t query_length) {(gdb)

gdb继续命中第二个断点:mysql_execute_command

(gdb) cContinuing.
Thread 39 "connection" hit Breakpoint 1, mysql_execute_command (thd=0x7ba310001200, first_level=true) at /usr/local/mysql-8.0.40/sql/sql_parse.cc:29462946	int mysql_execute_command(THD *thd, bool first_level) {(gdb) p m_query_stringNo symbol "m_query_string" in current context.(gdb) p thd.m_query_string$1 = {str = 0x7ba31002fc90 "select sleep(2)", length = 15}

再继续,命中第三个断点:File_query_log::write_slow

(gdb) cContinuing.
Thread 39 "connection" hit Breakpoint 3, File_query_log::write_slow (this=0x5c59d9ba18a8, thd=0x7ba310001200, current_utime=1743142862100420, query_start_utime=1743142567761813, user_host=0x7ba3a4ffd5c0 "root[root] @ localhost [127.0.0.1]", query_utime=294338607, lock_utime=0, is_command=false, sql_text=0x7ba31002fc90 "select sleep(2)", sql_text_len=15) at /usr/local/mysql-8.0.40/sql/log.cc:687687	                                size_t sql_text_len) {(gdb)

MySQL中也返回了结果

至此,可以验证出MySQL在执行SQL语句时,先写general log、再执行SQL、最后写slowlog。

大致的流程如下

3.  小结

从以上验证结果中可以得出MySQL在执行SQL语句时,先写general log、再执行SQL、最后写slowlog。

不过,还有遗留问题,例如,general log是在sql解析器写入还是解析后写入? slow log是在事务提交前写入还是提交后写入。继续我们继续探索。

图片

往期精彩回顾

  • 1.  MySQL高可用之MHA集群部署

  • 2.  mysql8.0新增用户及加密规则修改的那些事

  • 3.  比hive快10倍的大数据查询利器-- presto

  • 4.  监控利器出鞘:Prometheus+Grafana监控MySQL、Redis数据库

  • 5.  PostgreSQL主从复制--物理复制

  • 6.  MySQL传统点位复制在线转为GTID模式复制

  • 7.  MySQL敏感数据加密及解密

  • 8.  MySQL数据备份及还原(一)

  • 9.  MySQL数据备份及还原(二)

图片

扫码关注     

图片

图片


文章转载自:

http://BAkRRc0u.zmtrk.cn
http://C9qYe8yD.zmtrk.cn
http://mXgdaE3t.zmtrk.cn
http://VPAJSvwL.zmtrk.cn
http://YxreeQDP.zmtrk.cn
http://9tFWhHYo.zmtrk.cn
http://UBEQ9FJP.zmtrk.cn
http://h0PPPruG.zmtrk.cn
http://AlGcRB8U.zmtrk.cn
http://i2Hv835c.zmtrk.cn
http://wuFJoyAB.zmtrk.cn
http://1oWiYdkv.zmtrk.cn
http://YW2GdDPp.zmtrk.cn
http://7muQtKet.zmtrk.cn
http://NvNLy58m.zmtrk.cn
http://F7eMUY2J.zmtrk.cn
http://2tIrWRIv.zmtrk.cn
http://fbCpOYZ8.zmtrk.cn
http://vVSUptEU.zmtrk.cn
http://oOKHt6Zb.zmtrk.cn
http://HihWk4sF.zmtrk.cn
http://kUqcJ3Ut.zmtrk.cn
http://SRTurnxb.zmtrk.cn
http://lkvfcHsl.zmtrk.cn
http://XITGwe0n.zmtrk.cn
http://a5jturQM.zmtrk.cn
http://EouwsCRm.zmtrk.cn
http://GyHfoUeO.zmtrk.cn
http://fI3DolIA.zmtrk.cn
http://gY0Nenf9.zmtrk.cn
http://www.dtcms.com/wzjs/610744.html

相关文章:

  • 门户网站开发 价格wordpress安装地图代码
  • 如何提升网站用户体验wordpress用什么服务器配置
  • 国内外知名提供邮箱服务的网站做视频网站 视频放在哪里
  • 苏州市建设局网站集群统一登录做 理财网站
  • 自己做网站怎么修改语言python php 网站开发
  • 营销型网站公司长治网站制作怎么做
  • 网站seo 优化织梦 更换网站图标
  • 合合肥网站建设广州口碑好的网站建设设计
  • 怎么做网页会议邀请函深圳网站seo推广
  • 天津市网站建站制作郑州商城网站开发
  • 微信人生里面微网站怎么做广东东莞新增本土确诊0例
  • 四川住房城乡建设厅官方网站动画设计招聘信息
  • 北京市优化网站中小企业网站建设市场
  • 浙江省建设行政主管部门网站手机网页及网站设计
  • 开发商城网站公司无锡网站建设专注千客云网络
  • 预约网站模板德阳小程序开发
  • 动漫设计师发展前景嘉峪关网站seo
  • 二手交易平台 网站开发施工企业的描述
  • 中国商业网点建设开发中心官方网站深圳企业贷款中介
  • 做嗳啪啪 网站如何做好网络宣传工作
  • 网站怎么做市场分析什么是网络营销产生的现实基础
  • 航空网站建设未满18岁能申请网站备案吗
  • 医生可以自己做网站吗深圳罗湖企业网站建设
  • 茌平建设局网站网页设计作业成品免费百度云
  • 天津公司网站设计模块建站平台
  • 图片展示网站织梦源码上海室内设计公司排名前十强
  • 个人网站建设论文绪论网站设置301重定向
  • 网站建设市场多大鲜花网站建设解决方案
  • SaaS网站可以做seo嘛wordpress转html
  • 品牌网站设计工作室佘山做网站公司