634 天前 / reesunhuang
来自公众号:数据和云链接:https://www.modb.pro/db/25251 导读:MySQL 如何实现高性能?以下内容是结合其他技术同仁的总结和自我实践整理的 20 个开源数据库设计原则,分享至此,希望对大家有帮助。 开源数据库架构设计原则 01 技术选型 选择成熟的平台和技术,同时是最熟悉的,能做到极致的,用好不用坏,用熟不用生。目前业界的 MySQL 主流分支版本有 Oracle 官方版本的 MySQL、Percona Server、MariaDB。
654 天前 / 莲花童子哪咤
「苍茫大地一剑尽挽破,何处繁华笙歌落」。难道这普天之下尽没我容纳之处?为何这面试官总要与我争风相对,这不是难为人吗? 每次经历痛领悟,总会悠然南山下,独自愁楚。记录心中一片大海,唯有独自努力,方能实现行业之俊杰。 前言一个阳光明媚得上午,迎面走来了一位身着雪白雪白得的白色衬衣,灰白色相间的休闲短裤,还给我露出了彰显男儿本色的黑色腿毛。手拿银色金属质感得 MacBook Pro,外加一双小白鞋。看着那稀少的发量,在灯光的照耀下,甚至还有点反光。透过那从容不迫的脸色。 我内心不忍一颤,今天怕是要遇到人了。整整一个架构师的大叔呀。
656 天前 / clumsy
这是学习笔记的第2257篇文章 读完需要 9 分钟速读仅需 7 分钟 对于商业数据库而言,数据库升级是一个优先级很高的事情,有版本升级路线图,有相应的补丁,而且对于方案还有一系列的演练,显然是一场硬仗。而在 MySQL 方向上,升级这件事情就被淡化了许多,好像只能证明它的存在而已,当然正是由于这种不重视,也让我今天走了不少弯路。 一般来说,升级 MySQL 有两类可行方案,一类是直接升级数据字典,在本机完成,整个过程会有离线操作,会对业务有中断,第二种是通过高可用切换平滑实现,原理是搭建低版本到高版本的数据复制关系,这种方案优势比较明显...
661 天前 / 杀死那个程序员
点击上方"程序员历小冰",选择“置顶或者星标” 你的关注意义重大! 在上一篇文章《用 Explain 命令分析 MySQL 的 SQL 执行》中,我们讲解了 Explain 命令的详细使用。但是它只能展示 SQL 语句的执行计划,无法展示为什么一些其他的执行计划未被选择,比如说明明有索引,但是为什么查询时未使用索引等。为此,MySQL 提供了 Optimizer Trace 功能,让我们能更加详细的了解 SQL 语句执行的所有分析,优化和选择过程。 如果您想更深入地了解为什么选择某个查询计划,那么优化器跟踪非常有用。
665 天前 / openio
经常有朋友问,MySQL 双主的一致性问题,今天简单聊一聊。 MySQL 为什么要使用双主架构? MySQL 最常见的集群架构,是一主多从,主从同步,读写分离的架构。通过这种方式,能够扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。 为了保证 MySQL 写库的高可用,可以在一个 MySQL 数据库集群中可以设置两个主库,并设置双向同步,以冗余写库的方式,来保证写库的高可用。 MySQL 双主架构,会存在什么问题? 如果 MySQL 双主架构,同时提供服务,可能会引发数据的一致性问题。
668 天前 / 同花技术笔记
并发和锁 在学习事务隔离级别级别之前,我们首先需要知道为什么要有事务隔离级别,事务的隔离级别就是为了做好 「 并发的控制 」。 当多个查询出现的时候,就会产生 「 并发问题 」 ,对于大多数涉及到数据的应用程序来说,操作主要有两种,读取和写入。假如一个读取和一个写入同时进行操作的话,结果是有很多不确定性的,这种不确定将会导致不同的结果。 并发控制常用的方法就是建立锁。 在操作数据的时候,对线程进行加锁操作,操作完成后释放锁,持有锁期间,其它操作均无法占有锁,因此只能阻塞,无法执行成功。
691 天前 / u553049
1. Explain Analyze 介绍 Explain 是我们常用的查询分析工具,可以对查询语句的执行方式进行评估,给出很多有用的线索。 但他仅仅是评估,不是实际的执行情况,比如结果中的 rows,可能和实际结果相差甚大。 Explain Analyze 是 MySQL 8 中提供的新工具,牛 X 之处在于可以给出实际执行情况。 Explain Analyze 是一个查询性能分析工具,可以详细的显示出 查询语句执行过程中,都在哪儿花费了多少时间。 Explain Analyze 会做出查询计划,并且会实际执行,以测量出查询计划中各个关键点的实际指标,例如耗时、条数,最后详细的打印出来。
692 天前 / 虞大胆
mysqldump 是 mysql 官方机型逻辑备份的工具,作用非常多,可以进行全量备份,结合 binlog 还以做增量备份,也是做从库的利器,正确理解它非常有用。 今天列举我目前比较关心的几个点。 1:是否要锁表 默认的情况下它是锁表的,相当于调用—add-locks 参数,在每个表备份前后增加 LOCK TABLES 和 UNLOCK TABLES 语句,这样数据库表就只读了。 去年我做副库的时候,以防万一,喜欢调用 FLUSH TABLES WITH READ LOCK 语句,让全库只读,实际上增加—lock-all-tables 即可。
693 天前 / b_aihe
原创 2020-03-21mysql40 分钟 读完 ( 大约 6009 个字)总访问量0 次公司内部 mysql 使用规范分享最近涉及数据库相关操作较多,公司现有规范也不是太全面,就根据网上各路大神的相关规范,整理了一些自用的规范用法,万望指正。 数据库环境 dev: 开发环境,开发可读写,可修改表结构。开发人员可以修改表结构,可以随意修改其中的数据但是需要保证不影响其他开发同事。test: 测试环境,开发可读写,开发人员可以通过工具修改表结构。
711 天前 / 杀死那个程序员
点击上方"程序员历小冰",选择“置顶或者星标” 你的关注意义重大! 在上一篇文章《MySQL 常见加锁场景分析》中,我们聊到行锁是加在索引上的,但是复杂的 SQL 往往包含多个条件,涉及多个索引,找出 SQL 执行时使用了哪些索引对分析加锁场景至关重要。 比如下面这样的 SQL: 其中 id 和 val 都是索引,那么执行时使用到了哪些索引,加了哪些锁呢?为此,我们需要使用 explain 来获取 MySQL 执行这条 SQL 的执行计划。
719 天前 / 美团技术团队
总第 397 篇 2020 年 第 20 篇 巡检工作是保障系统平稳有效运行必不可少的一个环节,目的是能及时发现系统中存在的隐患。本文介绍了美团 MySQL 数据库巡检系统的框架和巡检内容,希望能够帮助大家了解什么是数据库巡检,美团的巡检系统架构是如何设计的,以及巡检系统是如何保障 MySQL 服务稳定运行的。 对了,文末还有一个重要的招聘信息,可以了解一下! 我们生活中随处可见各种巡检系统,比如电力巡检、消防检查等,正是这些巡检工作,我们才能在稳定的环境下进行工作、生活。
725 天前 / 我们都是小白鼠
写在前面文章涉及到的 customer 表来源于案例库 sakila,下载地址为 http://downloads.mysql.com/docs/sakila-db.zip Order by排序方式通过索引顺序扫描直接返回有序数据 通过对返回数据进行排序,即 FileSort 排序。 所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序。FileSort 并不代表通过磁盘文件进行排序,而只是说进行了一个排序操作,至于排序操作是否使用了磁盘文件或临时表取决于 MySQL 服务器对排序参数的设置和需要排序数据的大小。
725 天前 / 西岭老湿
作者简介 Roy,携程软件技术专家,负责 MySQL 双向同步 DRC 和数据库访问中间件 DAL 的开发演进,对分布式系统高可用设计、数据一致性领域感兴趣。 一、前言 携程内部 MySQL 部署采用多机房部署,机房 A 部署一主一从,机房 B 部署一从,作为 DR(Disaster Recovery)切换使用。当前部署下,机房 B 部署的应用需要跨机房进行写操作;当机房 A 出现故障时,DBA 需要手动对数据库进行 DR 切换。 为了做到真正的数据异地多活,实现 MySQL 同机房就近读写,机房故障时无需进行数据库 DR 操作,只进行流量切换,就需要引入数据实时双向(多向)复制组件。
728 天前 / 杀死那个程序员
点击上方"程序员历小冰",选择“置顶或者星标” 你的关注意义重大! 在上一篇文章《锁的类型以及加锁原理》主要总结了 MySQL 锁的类型和模式以及基本的加锁原理,今天我们就从原理走向实战,分析常见 SQL 语句的加锁场景。了解了这几种场景,相信小伙伴们也能举一反三,灵活地分析真实开发过程中遇到的加锁问题。 如下图所示,数据库的隔离等级,SQL 语句和当前数据库数据会共同影响该条 SQL 执行时数据库生成的锁模式,锁类型和锁数量。