文章目录
相关面试问题
- 请分析一个Group By 语句的异常原因
- 如何比较系统运行配置和配置文件中配置是否一致?
- 举几个mysql 中的关键性能参数
分析Group By 语句异常原因
可能这个问题会被认为是sql语句的原因, 刚开始我也是这么认为的。不过不急,可以思考思考在看看下面解释
假设有一个这样的表
sql 语句 :
select prodcut_id, warehouse_id, sum(count) as cnt from stock group by product_id;
结果:
在mysql 中的能执行成功,在其他的数据库可能出现语法错误
为什么能在mysql 中执行成功,是因为在mysql中的一个配置起了作用, 它就是 SQL MODE。
SQL MODE 的作用及设置
SQL_MODE值 : 会影响mysql 执行sql语句的结果。
- 配置mysql 处理SQL 的方式
- set [session/global/persist] sql_mode = ‘xxxxxx’ (persist是在mysql 8.0 中的)
- [mysqld] sql_mode = xxxxxxx
常用的SQL Mode
SQL_MODE= ‘ANSI’
SQL_MODE = ‘TRADITIONAL’
演示 only_full_group_by
-
刚开始查看sql_mode
-
执行sql语句, 可以的看到是执行成功的
-
修改sql_mode
-
再次执行上面的sql语句,会报错
-
此时必须在group by 后面写完整
演示 ansi_quotes
使用之后只能用单引号引字符串
演示 strict_trans_table
用普通模式,字符串插入int 类型 会成功
用严格模式,则会进行检查,字符串不能插入int 类型成功
比较系统运行配置和配置文件中配置
知识点
- 使用set 命令 配置动态参数
- 使用pt-config-diff 工具比较配置文件 (检查在运行中的配置和系统配置)
使用set 命令 配置动态参数
- set [session | @@session.] system_var_name = expr
- set [global | @@global .] system_var_name = expr
- set [persist | @@persist .] system_var_name = expr (mysql 8.0 中增加)
检查在运行中的配置和系统配置(mysql 5.x)
pt-config-diff u=root, p=, h = localhost /etc/my.cnf
举几个mysql 中的关键性能参数
常用的性能参数
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容