MySQL数据库实战
文章平均质量分 75
深入浅出存储知识体系
邴越
跨界工程师,电商技术专家,阿里云MVP,任职淘宝、美团,著有《分布式技术原理与实战》,拉勾网、InfoQ讲师、人人都是产品经理专栏作者,分享互联网架构,关注认知升级
展开
-
什么情况下MySQL主从复制会出现不一致
导致主从不一致的原因主要有:1、人为原因导致从库与主库数据不一致(从库写入)2、主从复制过程中,主库异常宕机等原创 2023-05-18 14:33:24 · 726 阅读 · 0 评论 -
MySQL实战之主从数据同步机制
半同步复制的方式,它兼顾了异步复制和同步复制的优点。如果主库宕机,至少还有一个从库有最新的数据,不存在丢数据的风险。并且,半同步复制的性能也还凑合,也能提供高可用保证,从库宕机也不会影响主库提供服务。原创 2023-05-11 14:43:05 · 2002 阅读 · 0 评论 -
常见的写热点数据优化方案
MySQL的热点行处理能力非常有限,单key最高吞吐只有2K TPS,同时传统的分库分表策略也无法解决热点数据问题。原创 2023-05-09 22:00:34 · 711 阅读 · 0 评论 -
LSM 树 设计思想总结
LSM 树将对磁盘的随机写入转化为了磁盘友好型的顺序写(无论机械磁盘还是 SSD,随机读写都要远远慢于顺序读写),从而大大提高了写性能。原创 2023-05-09 17:37:42 · 646 阅读 · 0 评论 -
经典平衡二叉树(AVL树)
二叉查找树(BSTree)中进行查找、插入和删除操作的时间复杂度都是O(h),其中h为树的高度。BST的高度直接影响到操作实现的性能,最坏情况下,二叉查找树会退化成一个单链表,比如插入的节点序列本身就有序,这时候性能会下降到O(n)。可见在树的规模固定的前提下,BST的高度越低越好。1.平衡二叉树平衡二叉树是计算机科学中的一类改进的二叉查找树。平衡二叉树具有以下性质:(1)一...原创 2015-12-14 15:57:00 · 361 阅读 · 0 评论 -
二叉查找树及B-树、B+树、B*树变体
动态查找树主要有二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree), 红黑树 (Red-Black Tree ),都是典型的二叉查找树结构,查找的时间复杂度 O(log2-N) 与树的深度相关,降低树的深度会提高查找效率,于是有了多路的B-tree/B+-tree/ B*-tree (B~Tree)。二叉查...原创 2015-12-24 10:23:00 · 226 阅读 · 0 评论 -
存储过程与SQL语句如何选择
58到家数据库30条军规,有一条是“禁止使用存储过程、视图、触发器、Event”,高并发大数据的互联网业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”,并发量大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现“增机器就加性能”。数据库擅长存储与索引,在目前的互联网系统架构中,服务器的扩展要比存储的扩展更简单,需要考...原创 2017-02-24 11:42:00 · 142 阅读 · 0 评论 -
存储过程与事务应用两三事
项目开发中通常会有一些复杂业务场景,比如多个数据表的插入更新等,这些业务通常需要事务的支持。Spring等框架支持对事务的管理,可以更好的实现存储和业务逻辑的分离,不过代码或者框架层面的事务管理,最终还是落实到数据库上,存储过程作为一组预编译的SQL语句,性能会优于代码层面的多次SQL操作。处理一些要求原子性等的业务,可以在存储过程中结合应用事务。一、...原创 2017-02-22 17:40:00 · 163 阅读 · 0 评论 -
HBase应用快速学习
HBase是一个高性能、面向列、可伸缩的开源分布式NoSQL数据库,是Google Bigtable的开源实现。HBase的思想和应用和传统的RDBMS,NoSQL等有比较大的区别,这篇文章从HBase的架构和关键的Rowkey设计入手,快速学习相关应用。一、 HBase设计特性HBase概述HBase是一个构建在HDFS上的分布式列存储系统,...原创 2017-04-10 16:44:00 · 251 阅读 · 0 评论 -
面试官系列,深入数据库分区分库分表
一、为什么要分库分表软件时代,传统应用都有这样一个特点:访问量、数据量都比较小,单库单表都完全可以支撑整个业务。随着互联网的发展和用户规模的迅速扩大,对系统的要求也越来越高。因此传统的MySQL单库单表架构的性能问题就暴露出来了。而有下面几个因素会影响数据库性能:数据量MySQL单库数据量在5000万以内性能比较好,超过阈值后性能会随着数据量的增大而变弱。MySQL单表的数据量是500w...原创 2020-02-15 17:33:16 · 1370 阅读 · 1 评论 -
从原理到优化,深入浅出数据库索引
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。数据库查询是数据库的最主要功能之一,我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化,这篇文章对索引做一个系统的梳理,希望对大家有帮助。一、MySQL有哪些索引类型索引的分类可以从多个角度进行,下面分别从数据结构,物理存储和业务逻辑三个维度进行划分。1、从数据结构角度...原创 2020-02-13 22:39:47 · 382 阅读 · 0 评论 -
为何MySQL 8.0开始取消了查询缓存
MySQL 8.0 版本直接将查询缓存的整块功能删掉了,彻底没有这个功能了。原创 2023-04-18 16:38:53 · 1257 阅读 · 0 评论 -
MySQL笔记之文件和日志
MySQL通过两阶段提交过程来完成事务的一致性的,也即redo log和binlog的一致性的,理论上是先写redo log,再写binlog,两个日志都提交成功(刷入磁盘),事务才算真正的完成。原创 2023-05-09 16:22:22 · 1102 阅读 · 0 评论 -
redo log和undo log写入的两阶段提交
两阶段提交就是执行完更新语句后,先将redo log状态设置为prepared,等更新内容写入binlog后,在将redo log状态设置为commited。原创 2023-05-09 15:31:48 · 191 阅读 · 0 评论 -
MySQL的redolog和binlog有哪些区别?
redo log 是 innodb生成的日志,主要为了保证数据的可靠性;bin log 是 MySQL server层面上生成的日志,主要用于 point in time 恢复和主从复制。undo log 主要用于事务的回滚和一致性快照读(MVCC 多版本并发控制)。原创 2023-05-09 15:00:34 · 187 阅读 · 0 评论 -
innodb_flush_log_at_trx_commit 和 sync_binlog 参数解析
这两个参数和MySQL的一致性以及性能相关,默认配置大多数情况下不是最优的。一般来说,互联网线上系统的配置:innodb_flush_log_at_trx_commit —— 0,sync_binlog —— 1000原创 2023-05-06 15:32:56 · 982 阅读 · 0 评论 -
MySQL Order by对各种排序算法的应用
order by这个语法你肯定用过,今天我们就来聊聊order by是怎么工作的,遇到排序慢了又该怎么优化原创 2023-05-05 20:03:51 · 767 阅读 · 0 评论 -
MySQL笔记之一致性视图与MVCC实现
在MySQL中,READ COMMITTED和REPEATABLE READ隔离级别的区别就是它们生成ReadView的时机不同原创 2023-04-07 16:23:05 · 622 阅读 · 0 评论 -
MySQL 8.0:无锁可扩展的 WAL 设计
在MySQL 8.0以前,为了保证flush list的顺序,redo log buffer写入过程需要加锁,无法实现并行, 8.0开始,设计了一套无锁的写log机制原创 2023-04-06 16:05:33 · 852 阅读 · 0 评论 -
InnoDB Buffer Pool改进LRU页面置换
缓冲池(buffer pool)是一种常见的降低磁盘访问的机制InnoDB的缓冲池以数据页(page)为单位缓存数据InnoDB 对普通 LRU 进行了优化,将缓冲池分为老生代和新生代,入缓冲池的页,优先进入老生代,页被访问,才进入新生代,以解决预读失效的问题。同时采用老生代停留时间窗口机制,当数据页被访问且在老生代停留时间超过配置阈值的,才进入新生代,以解决批量数据访问,大量热数据淘汰的问题。原创 2023-03-30 17:23:24 · 485 阅读 · 0 评论