美文网首页MySQL
《全方位认识SYS系统库》公开课精彩互动问答

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

作者: 小知_知数堂 | 来源:发表于2019-11-11 16:29 被阅读0次

    目录

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

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

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


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

    性能测试的方法论基本都一样, 以“观察-分析-改进-再观察”这个循环进行。

    常规业务由于业务交互复杂、技术栈庞杂、性能瓶颈通常集中于业务, 性能测试使用的分析方法比较简单, 通过诊断业务通常可以低成本地找到性能瓶颈。

    MySQL中间件的应用场景比较简单、技术栈稳定、性能瓶颈通常集中于架构和环境, 性能测试使用的分析方法比较多, 对性能瓶颈的分析通常成本比较高. 另外在这一方面的现有知识积累并不很成体系, 也是成本较高的原因之一。

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

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

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

    2、myisam锁如何查询?

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

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

    答:对于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、如果要系统的学习SYS 库,可以看什么资料,有什么途径?

    答:(1)MySQL 官方网站:https://dev.mysql.com/doc/ref...

    (2)关注微信公众号:"数据浮云",我们后续会陆续推送 sys 系统库相关的文章

    (3)关注 知数堂 或 3306pai社区,后续会以gitbook或电子书的方式发布 sys 系统库完整的官方翻译版

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

    答: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打头的系统变量来进行灵活配置,请根据需要自行调整,默认情况下不建议调整,除非你真的需求,否则就会浪费内存空间。

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

    1、直接修改法. alter或者pt-osc等其他工具直接对数据进行修改。

    2、备份修改法. 利用mysqldump或者其他逻辑备份进行备份,备份的结果集再利用iconv进行转换

    3、跳过字符集备份.利用mysqldump备份的时候跳过字符集-t --skip-set-charset。在恢复的时候指定表的字符集。

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

    1、首先要从应用端到MySQL,采用统一编码格式。

    2、在MySQL的配置中,指定编码格式。

    3、在上线或者导入SQL的时候,要注意本地的编码集。

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/bwitictx.html