《叶问》第6期

2018年7月26日,周四

专访黄炎:MySQL中间件的性能测试和常规业务性能测试相比有什么不同?

1、性能测试的方法论基本都一样, 以“观察-分析-改进-再观察”这个循环进行。
2、常规业务由于业务交互复杂、技术栈庞杂、性能瓶颈通常集中于业务, 性能测试使用的分析方法比较简单, 通过诊断业务通常可以低成本地找到性能瓶颈。
3、MySQL中间件的应用场景比较简单、技术栈稳定、性能瓶颈通常集中于架构和环境, 性能测试使用的分析方法比较多, 对性能瓶颈的分析通常成本比较高. 另外在这一方面的现有知识积累并不很成体系, 也是成本较高的原因之一。

2018年8月2日,周四

《全方位认识SYS系统库》公开课精彩互动问答:

1、为什么我用root用户调用call ps_setup_enable_instrument('wait');报错说存储过程不存在?

1、答:sys schema是从MySQL 5.7之后才默认支持,请确保你的数据库版本正确,且先使用use语句切换默认数据库,否则请带上 sys.库名称限定前缀。

2、myisam锁如何查询?

1、答:MyISAM 不支持事务,所以不存在事务锁,但可以查询表级锁(例如:MDL锁),通常表级锁是Server层添加的锁,与具体的存储引擎无关,所以与InnoDB存储引擎查询方法一致,建议多多尝试即可得出答案。

3、为什么我查询session系统表,当前正在执行SQL的会话的progress为 NULL 呢?

1、答:对于progress信息,仅支持stages事件(performance_schema.setup_instruments表的name字段以stages开头的采集项),其他事件类型不支持,且就算是stages类型事件,也不是所有的采集项都支持,可以通过观察performance_schema.events_stages_current表的WORK_COMPLETED和WORK_ESTIMATED字段,需要不为NULL值,progress信息就是根据这些不为NULL的值进行计算的

注意:要成功采集stages性能数据,必须打开stages事件相关的instruments和consumers
如果不满足以上条件,session视图查询到的progress字段就会显示NULL。

4、线上数据库,开启ps和关闭ps功能,mysqld使用的内存会相差20G,可以判断ps会用到很多主机内存。怎么判断ps功能回来多少内存?怎么进行优化ps对内存的使用?

1、答:ps的整体功能无法动态开关,必须在数据库启动之前就设置好,能够动态开关的只是ps的具体的instruments采集项和consumers存储表,对于查询ps使用的内存总量,可以使用语句 select sys.format_bytes(sum(current_alloc)) from sys.x$memory_global_by_current_bytes where event_name like 'memory/performance_schema%'; 查询,对于ps内存使用的优化,MySQL 提供了一系列performance_schema打头的系统变量来进行灵活配置,请根据需要自行调整,默认情况下不建议调整,除非你真的需求,否则就会浪费内存空间。

2018年8月7日,周二

在MySQL中如果发现乱码的情况该如何判断原因及应对?

1、直接修改法. alter或者pt-osc等其他工具直接对数据进行修改。
2、备份修改法. 利用mysqldump或者其他逻辑备份进行备份,备份的结果集再利用iconv进行转换
3、跳过字符集备份.利用mysqldump备份的时候跳过字符集-t --skip-set-charset。在恢复的时候指定表的字符集。

那么应该如何避免乱码呢?

1、首先要从应用端到MySQL,采用统一编码格式。
2、在MySQL的配置中,指定编码格式。
3、在上线或者导入SQL的时候,要注意本地的编码集。

上一篇:Vue中进度条的使用


下一篇:Requests库