中间件与数据库:MySQL
技术同学必会的MySQL设计规约,都是惨痛的教训
怎么才能很好的避免低级故障?以下规范在大型互联网公司经过了充分的验证,尤其适用于并发量大、数据量大的业务场景。
QQA: MySQL 竟然无法区分大小写?
MySQL 执行 select 'a' = 'A'; 得到的结果竟然是真(1)?同学,collation 了解一下。
究其原因,是因为默认的 Collation 设置为 utf8mb4_general_ci(不同机器/字符编码下不同),任何的字符串比较都会忽略大小写。
QA视角的MySQL探险之旅:穿越慢查询沼泽,揭示实战避坑指南
数据库是“按照数据结构来组织、存储和管理数据的仓库”,承接核心的业务数据,在业务中占有非常重要的地位。
MySQL网络写超时分析
某客户使用TDSQL MySQL8.0版本,在跑批场景下出现连接中断现象。业务反馈的错误信息如下:
ERROR c.a.d.p.DruidPooledPreparedStatement - getMaxFieldSize error
java.sql.SQLException: No operations allowed after statement closed.
...
客户跑批场景是每次从数据库流式获取 2000 条数据,完成相应业务逻辑后再继续获取下一批数据,每批数据之间的间隔约 30s。
MySQL自治平台建设的内核原理及实践(下)
本篇系超大规模数据库集群保稳系列的第四篇(下),本篇介绍了数据库内核可观测性建设、全量SQL、异常处理以及索引优化建议与SQL治理方面的内容。
MySQL自治平台建设的内核原理及实践(上)
本篇系超大规模数据库集群保稳系列的第四篇(上),本文将介绍数据库的异常发现与诊断方面的内容。
从慢日志问题看 MySQL 半一致性读的应用场景
作者通过一个慢日志问题,引出 MySQL 半一致性读的概念及实际应用场景。
G1垃圾回收参数调优及MySQL虚引用造成GC时间过长分析
本文主要解决JAVA应用G1垃圾回收STW时间过长问题,阐述排查流程及优化方案。通过G1参数调优、解决MySQL(PhantomReference)虚引用问题,将STW时间控制到100ms以内。
由浅入深了解MySQL底层查询逻辑
mysql的高性能主要体现在写和读上,在写的层面公司DBA已经进行了主从主备的高可用部署,同时对redolog、binlog等有很好的管理,基于我们目前对快速读的需求比较多,本文主要探讨怎么高性能读?
MySQL的字符集实现
我们以5.7.36版本作为演示版本,探索一下MySQL内部字符集的实现,以此来从内部的视角来看看神秘的MySQL字符集是如何实现的。
Building and deploying MySQL Raft at Meta
At Meta, we run one of the largest deployments of MySQL in the world. The deployment powers the social graph along with many other services, like Messaging, Ads, and Feed. Over the last few years, we have implemented MySQL Raft, a Raft consensus engine that was integrated with MySQL to build a replicated state machine. We have migrated a large portion of our deployment to MySQL Raft and plan to fully replace the current MySQL semisynchronous databases with it. The project has delivered significant benefits to the MySQL deployment at Meta, including higher reliability, provable safety, significant improvements in failover time, and operational simplicity — all with equal or comparable write performance.
MySQL慢SQL探究
本文介绍了MySQL慢查询日志的配置方式和日志内容格式。慢查询日志参数可通过写入MySQL配置文件或在MySQL Server中临时开启来进行配置。日志中记录了每条慢SQL的执行时刻、执行用户、执行时间、获取锁时间、发送给Client端的行数和扫描的行数等信息。开发者可以根据日志内容进行性能优化。
MySQL之到底该查哪个分区?
MySQL使用分区剪枝来确定哪些分区符合查询条件,根据不同的分区类型进行判断。使用SEL_TREE
描述区间范围进行剪枝,每个SEL_ARG
包含一个或多个分区键。SEL_TREE
可以分为三种情况,其中第三种情况是多个index merge tree
,可以描述成merge_tree1 AND merge_tree2 ... AND merge_treeN
,每个merge tree类似于第二种情况。在find_used_partitions
中,根据分区类型和剪枝条件是否为一个等值查询进行剪枝,剪枝的结果取并集。如果无法只创建一个SEL_ARG
,则会创建一个index_merge tree
。
MySQL主从复制原理剖析与应用实践
MySQL Replication(主从复制)是指数据变化可以从一个MySQL Server被复制到另一个或多个MySQL Server上,通过复制的功能,可以在单点服务的基础上扩充数据库的高可用性、可扩展性等。
记一次实遇的 MySQL--index merge 死锁历程
你遇到过 Mysql--index merge 死锁吗?
一文读懂AnalyticDB MySQL过滤条件智能下推原理
在我们的常规认知中,过滤条件肯定是推的越靠近底层越好,将尽可能多的过滤条件更贴近数据源,以使查询时能跳过无关的数据,在AnalyticDB MySQL中,由于存储计算分离架构,那么谓词下推就是把所有能推的谓词都推到存储节点上去做。比如下图,所有的过滤条件都推到存储节点上去做,这样减少了后续算子的计算量,也减少了中间网络传输的数据量。谓词下推带来了很多的好处,基本上所有数据库,都会把谓词下推作为他们重要的优化功能。