Contents

数据库-mysql-个人笔记

mysql用什么进行错误分析与定位

在 MySQL 中,常用的错误分析和定位工具包括:

  1. 错误日志(error log):MySQL 会将错误信息记录在错误日志中,可以通过查看错误日志来分析和定位错误。错误日志的路径和文件名可以在 MySQL 配置文件中指定。
  2. 慢查询日志(slow query log):MySQL 会将执行时间超过指定阈值的查询记录在慢查询日志中,可以通过查看慢查询日志来发现慢查询、分析查询性能、定位查询性能问题。慢查询日志的路径和文件名可以在 MySQL 配置文件中指定。
  3. 查询分析器(query profiler):MySQL 提供了查询分析器,可以分析查询的执行计划、执行时间等信息,帮助优化查询性能。
  4. 数据库状态变量(status variable):MySQL 提供了一些状态变量,可以帮助分析和诊断数据库的性能问题,如连接数、锁状态、缓存命中率等。
  5. 数据库诊断工具:MySQL 提供了一些数据库诊断工具,如 mysqlcheck、mysqlslap、mysql_upgrade 等,可以对数据库进行检查、压力测试、升级等操作。

综上所述,MySQL 提供了多种错误分析和定位工具,包括错误日志、慢查询日志、查询分析器、数据库状态变量和数据库诊断工具,可以根据实际情况选择合适的工具来分析和定位数据库的错误和性能问题。

慢查询是什么

在数据库中,慢查询(slow query)是指执行时间超过阈值的查询语句。通常情况下,慢查询的阈值是以秒为单位进行设置的,可以根据实际情况进行调整。慢查询通常是数据库性能问题的一种表现,可能导致数据库响应变慢、负载增加等问题。

在 MySQL 中,慢查询可以通过开启慢查询日志(slow query log)进行记录。当一个查询语句执行时间超过阈值时,MySQL 会将该查询语句的执行时间、执行次数、返回行数、执行计划等信息记录在慢查询日志中。通过查看慢查询日志,可以发现慢查询、分析查询性能、定位查询性能问题。

可以通过以下步骤开启慢查询日志:

  1. 修改 MySQL 配置文件,添加以下内容:
1
2
3
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1

其中,slow_query_log 表示是否开启慢查询日志,slow_query_log_file 表示慢查询日志的保存路径和文件名,long_query_time 表示执行时间超过多少秒的查询语句会被记录在慢查询日志中。

  1. 重启 MySQL 服务
  2. 查看慢查询日志,可以使用以下命令:mysqldumpslow -s t /var/log/mysql/mysql-slow.log

其中,-s t 表示按照执行时间排序。该命令会列出所有慢查询的执行时间、执行次数、返回行数、执行计划等信息。

综上所述,慢查询是指执行时间超过阈值的查询语句,在 MySQL 中可以通过开启慢查询日志进行记录和分析。通过分析慢查询日志,可以发现慢查询、分析查询性能、定位查询性能问题,以优化数据库的性能。

视图会根据数据改变而变化

视图会根据底层表的数据变化而相应地进行更新。视图是基于表或其他视图的查询结果生成的虚拟表,它并不存储数据,而是通过查询操作实时生成结果

当底层表中的数据发生改变时,视图中的数据也会相应地发生变化,以保持与底层表的一致性。这意味着当对底层表进行插入、更新或删除操作时,视图会根据这些改变自动更新其结果,以反映最新的数据状态

查看已有连接

1
show processlist;

MySQL导出数据为csv

CSDN zhaixing_0307 MySQL导出数据为csv的方法

1
select *  from (select 'col1','col2','col3','col4','col5' union select id,user,url,name,age  from test) b into outfile '/tmp/test1.csv' fields terminated by ',' escaped by '' optionally enclosed  by '' lines terminated by '\n';

查询区分大小写

博客园 沧海一滴

mysql默认不区分大小写

使用binary关键字来指定区分大小写

1
select ... from ... where binary xxx = xxx;

按一条数据一条数据打印结果

1
select ... \G

show create xxx

查看建表的语句,xxx为表名

字符串是可以比较大小的

1
select 'aaa' > 'bbb'

设置auto_increment

1
2
3
4
CREATE TABLE `config_booktype` (
 `Id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 ...
)ENGINE=InnoDB  AUTO_INCREMENT=1000 AUTO_INCREMENT_INCREMENT=10 DEFAULT CHARSET=utf8;

with子句8.0新特性

MySQL 8.0 新特性之通用表表达式 不剪发的Tony老师

通用表表达式(CTE)是一个在语句级别定义的临时结果集,内存中

1
2
3
4
with_clause:
    WITH [RECURSIVE]
        cte_name [(col_name [, col_name] ...)] AS (subquery)
        [, cte_name [(col_name [, col_name] ...)] AS (subquery)] ...

按行显示记录

1
select ... \G;

空值(null)和空字符串(‘‘)的区别

空值(null)和空字符串(‘‘)的区别

NULL值查询使用is null/is not null查询,而空字符串(’’)可以使用=或者!=、<、>等算术运算符

 |