《叶问》第3期

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

2018年6月24日,周日

MySQL 8.0相对于5.7的复制改进,都有哪些呢?

宋利兵老师:《MySQL 8.0相对于5.7的复制改进》的公开课也讨论了这个命题,简单概括主要有两部分

一、普通复制功能改进

1、新增WRITESET并行复制模式,提高并行度,降低延迟
2、在多源复制中,可在线动态修改每个channel的filter rule,并且能在P_S中查看/监控
3、Binary Log中存储更多元数据,并支持毫秒级别的延迟监控
4、对JSON Documents的复制效率更高了
5、支持DDL Crashsafe
6、增加caching_sha2_password安全策略,提高复制安全性

二、MGR功能改进:

1、支持设置节点权重,且权重最大的在线节点将被选举为主
2、每个节点中存储更多的状态信息,如版本、角色等
3、可根据从节点的事务状态,自动化流控
4、离开集群的服务器自动被设置为read only,避免被误操作更新数据
5、可监控MGR的内存使用情况

2018年6月25日,周一

跑truncate table,4亿条数据会不会造成长时间锁表呢?有什么更好的方法吗?

最好是create新表,然后交叉rename对调,再drop/truncate table或其他方式清除数据。

一、可操作步骤:

1、创建新的 tmp 表,正式表与tmp表表名交换(注意在一个SQL里完成,并锁表)
2、对 tmp 表创建硬链接 ln tmp.ibd tmp.ibd.hdlk
3、mysql中删除表tmp(truncate / drop 都行)
4、然后找个业务不繁忙的时间删除数据文件或者用coreutils 的truncate慢慢搞

二、关于truncate table,官档解释:

1、Logically, TRUNCATE TABLE is similar to a DELETE statement that deletes all rows, or a sequence of DROP TABLE and CREATE TABLE statements When a table is truncated, it is dropped and re-created in a new .ibd file, and the freed space is returned to the operating system

2018年6月26日,周二

明明有个索引“感觉”应该被选中,EXPLAIN时在possible_keys也有它,但最后没被选中,可能的原因有哪些?

一、执行计划如下:

1、desc select * from t1 where c2 >= 2;

key: NULL
key_len: NULL
rows: 14
filtered: 92.86
Extra: Using where

二、可能的原因如下:

1、隐式转换
2、表碎片,因为表的碎片率过高
3、根据索引读取到的数据在整个表中的数据占比超过30%
4、统计信息没有及时更新

三、上述执行计划的结果是:

预计扫描的行数为14行,filtered(是指返回结果的行占需要读到的行的百分比)的值为92%。

当前执行计划中filtered值92% 说明根据索引查询获取的结果占整张表的92%,在MySQL中根据索引查询的结果占整张表的数据30%则不会走索,所以不会走索引。
另外,也有可能是表的碎片率过高或隐式转换导致的。

2018年6月27日,周三

主从复制线程均正常(为Yes,也没报错),Master的binlog已到binlog.000100,但slave上看到Master_Log_File却只到binlog.000090,可能的原因有哪些?

首先要注意,这是Master_Log_File IO线程延迟,并不是Relay_Master_Log_File SQL线程延迟。

一、可能的原因如下:

1、由于sync_relay_log值过低,导致Slave频繁刷新relay_log文件,使 Slave的硬盘资源消耗过高,所以导致SlaveIO Thread很慢。
2、Master/Slave压力过大导致Slave IO Thread不能及时响应, 无法及时获得Master的event。
3、网络丢包严重。小包可以连接并且保持连接不断,但是大包就无法发送。可能是Master和Slave关于TCP MTU值设置不一致导致。
4、Master和Slave网络链接已经断开。但slave_net_timeout值等于0(表示完全禁用心跳)或者slave_net_timeout和Slave_heartbeat_period非常大(表示检测主从心跳的时间)。
5、Master的binlog非常大,io线程的file很长时间都在读同一个。

二、总结

本次案例是在主库进行压力测试,在压力测试的过程中,因为Master本身的压力就很大Master来不及把binlog发送给Slave。所以表面上看起来没有延迟,但实际上已经产生了延迟。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
10月前
|
小程序 BI Go
当“企业微信协议”遇上旧iPad:一条被遗忘的推送如何撬动千万订单
在618大促中,面对短信退订率高、触达难的问题,运营人员巧妙利用闲置iPad登录企业微信,挖掘其未公开的协议接口,实现高效用户召回,最终提升转化率,保住预算。
535 0
|
6月前
|
人工智能
不是工程师,也不是老板:AI智能体来了时代最稀缺的职业,叫“领航员
智能体时代已至,执行者正被系统取代。真正稀缺的不是会用AI的人,而是能定义目标、设计流程、掌控结果的“领航员”。从操作AI到指挥AI,未来价值取决于你站在哪一层。
|
网络协议 网络安全 网络虚拟化
路由器详细讲解
路由器是连接不同网络并转发数据包的关键设备,工作在OSI模型第三层(网络层)。它通过路由表选择最佳路径,支持数据转发、NAT转换、防火墙保护等功能。路由器分为家用、商用和工业级,各有针对性的性能与功能。其配置包括硬件连接、登录管理界面及网络、无线、安全等设置,选购时需关注处理能力、无线速率、端口速率和功能需求等关键指标。
1756 22
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
深度ai学术-从全网文献搜索到免费文献AI解析
深度AI学术(scholar.aisciresgo.com)打通科研全流程:全网智能搜索、免费获取文献、AI深度解析与精准翻译,一站式解决“搜不到、下不了、读不完”难题,助力研究者高效创新,开启智能科研新范式。
936 1
|
人工智能 Oracle 搜索推荐
大模型重塑数据中心,全球服务器产业迎新增长浪潮
大模型重塑数据中心,全球服务器产业迎新增长浪潮
|
数据可视化 JavaScript 小程序
1.3K star!VisActor团队开源神器,3秒生成商业级图表,程序员直呼真香!
VChart是由VisActor团队推出的高性能可视化解决方案,GitHub上已获2.3k+星标。它支持Web、小程序和Node.js多端适配,具备百万级数据流畅渲染、20+图表类型深度定制等优势。核心功能包括声明式语法、智能图表推荐及企业级扩展能力。适用于金融大屏、商业智能、工业物联网等场景,提供极简代码实现商业级数据可视化。
632 0
|
网络协议 数据可视化 网络安全
firewalld 详细介绍配置(二)
【8月更文挑战第10天】配置`firewalld`涉及安装、启动与管理防火墙规则。首先通过`yum install firewalld`安装,然后使用`systemctl`命令进行启动、停止及禁用服务。`firewall-cmd`命令用于管理防火墙状态、查看版本与帮助信息、设置默认区域及接口所属区域。可通过添加或移除端口和服务来控制网络流量,并利用丰富规则进行更细粒度的控制。此外,`firewalld`支持动态规则更新,无需重启服务即可生效。可以通过配置文件持久化规则设置,适用于长期维护场景。
813 3
|
前端开发 UED
组件化的好处是什么
【8月更文挑战第13天】组件化的好处是什么
702 1
|
API 数据安全/隐私保护 开发者
​收不到验证码邮件该怎么办?
在日常生活中,收不到邮箱验证码会带来不便。解决方法包括:检查垃圾邮件文件夹并调整过滤设置;确认邮箱地址无误或使用备用邮箱;检查邮箱存储空间并设置自动清理;了解邮件服务提供商状态或尝试其他服务。使用AOKSend可确保验证码邮件顺利送达:注册账户,获取API密钥,配置SMTP设置,并利用分析工具优化邮件发送策略。遵循这些建议,能有效解决收不到验证码的问题。
|
SQL 关系型数据库 MySQL
MySQL中如何查看所有数据库的名称?
【6月更文挑战第12天】MySQL中如何查看所有数据库的名称?
880 3

热门文章

最新文章