叶问6

《叶问》是知数堂新设计的互动栏目,不定期给大家提供技术知识小贴士,形式不限,或提问、或讨论均可,并在当天发布答案,让大家轻轻松松利用碎片时间就可以学到最实用的知识点。

2018年8月2日,周四

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

1、为什么我用root用户调用call ps_setup_enable_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/refman/5.7/en/sys-schema.html

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

2018年8月7日,周二

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

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

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

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

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

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

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

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

原文地址:https://www.cnblogs.com/allenhu320/p/11346979.html