425 天前 / 会玩code
以下是结合网上及此前面试时遇到的一些关于 mysql 索引的面试题。若对 mysql 索引不太了解可先翻阅相关文章 大白话 mysql 之深入浅出索引原理 - 上大白话 mysql 之深入浅出索引原理 - 下什么是索引?索引类似书本的目录,查询书中的指定内容时,先在目录上查找,之后可快速定位到内容位置。在数据库中通常通过 B 树 / B + 树数据结构实现。 主键索引和非主键索引有什么区别?主键索引树中叶子节点存储的是整行数据,而非主键索引叶子节点上保存的是主键的值。
427 天前 / yes的练级攻略
我是小 M,在卡拉巴拉星球。 是一个立志建立 MySQL 帝国的男人。 1 上回说到我入职了 Y 公司,建了个叫 B+ 树的玩意来管理数据。 但是老板最后加了个需求,他需要通过姓名来查询用户的信息。 用户结构这。...我是拿用户的 ID 来排序组装成索引的呀。 如果查询条件是姓名的话,这个索引就用不上了,那就得每页都翻阅过去,这就是全表扫描了呀! 查询的速度又会降下来了! 我盯着手上的奶茶思考了一会儿。 没办法,只能根据姓名再建立一个索引了。 这个索引的目录页没啥问题,把 ID 改为姓名,按字母序存储姓名和页号即可。
428 天前 / codecodify
PHP 框架我一般使用 Laravel,开发环境是直接使用 docker-compose 搭建的,其中容器包括 PHP、Nginx 和 Mysql。一般开发阶段一个项目配置一个数据库没什么问题,但是如果服务器要搭建很多项目,都要单独搭建数据库就不好管理了,也占用很多内存,对一般个人和小型企业这是一笔很大的开销。所以一般是单独搭建数据库容器,然后通过网络与其它项目关联起来,项目就可以通过 DNS 或 IP 访问数据库。
430 天前 / titus
1.原因分析业务 MySQL 采用了读写分离的方式,写 Master 主机,读 Slave0 从机。这样的好处是读写负载被分布到不同机器,同时可以防止大量读引起 Master 故障。 看 DB 监控发现新增字段时,出现了大量的主备延时。什么是主备延时? 下图是主备同步的流程,Master 生成 binlog 后,dump_tread 线程将 binlog 同步传输给 Slave。Slave 上的 io_thread 线程接收数据并存储为中转日志 relog,最后由 sql_thread 线程将数据重放到引擎存储中。主备延时是从主机执行事务成功到备机 sql_thread 线程重放数据到最新事务 id 的时间差。
432 天前 / 阿Q说代码
我们在上篇文章中提到了记录锁(行锁)、间隙锁和临键锁,后台有小伙伴催我更新一下其他的锁。拖延症又犯了,趁周末,今天我们来总结一下 MyISAM 和 InnoDB 引擎下锁的种类及使用方法。 MySQL 的四大常见存储引擎谈到 MyISAM 和 InnoDB 了我们先来了解一下什么是存储引擎吧。MySQL 中的数据用各种不同的技术存储在文件(或者内存)中,这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能,我们把这些不同的技术以及配套的相关功能称为存储引擎 ( 也称作表类型)。
435 天前 / 三分恶
在前面我们了解了 server 层调用存储引擎层接口来完成 sql 的执行,使用存储引擎的好处是:每个存储引擎都有各自的特点,能够根据具体的应用建立不同存储引擎表。 需要注意的是,存储引擎是基于表的,而不是数据库。 MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE 等。 其中最常用的 3 种,InnoDB、MyISAM、Memory,MySQL5.5.8 以后,默认存储引擎为 InnoDB。 1、常用存储引擎 1.1、InnoDB 存储引擎 InnoDB 是 MySQL 的默认事务型引擎,也是最重要、使用最广泛的存储引擎。
438 天前 / 三分恶
深入学习 MySQL,从概览 MySQL 逻辑架构开始。 首先来看一下 MySQL 的逻辑架构图: MySQL 逻辑架构 MySQL 逻辑架构大概可以分为三层: 客户端:最上层的服务并不是 MySQL 所独有的,大多数基于网络的客户端 / 服务器的工具或者服务都有类似的架构。比如连接处理、授权认证、安全等等。Server 层:大多数 MySQL 的核心服务功能都在这一层,包括查询解析、分析、优化、缓存以及所有的内置函数(例如,日期、时间、数学和加密函数),所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。存储引擎层:第三层包含了存储引擎。
440 天前 / yes的练级攻略
我是小 M,我在卡拉巴拉星球。 我喜欢数据,我立志成为一个数据管理者。 所以我来 Y 公司应聘,听说他们的数据量挺大的。 面试过程还是挺简单的。 我用 007 这三个数字就轻易打败了一堆吹嘘 996 的应聘者。 此刻,我独领风骚。 1 今天是我第一天上班,我笔直地坐在工位上,等着老板的宠幸。 下午两点。 Y 老板推门而入,打着哈欠看着我:“007,你背有问题?坐得这么直?” “老板你好,我叫小 M,不是叫 007 ,007 是我对公司的热爱,是我的毕生。
441 天前 / 郭儿的跋涉
一、前言 MySQL 的并发控制是在数据安全性和并发处理能力之间的权衡,通过不同的锁策略来决定对系统开销和性能的影响。 只要存在多个客户端同时修改更新数据,就会存在并发问题,MySQL 通过 MVCC 和锁来处理这一问题。 二、锁的粒度 Lock TypeMySQL 源码中定义了两种锁的粒度,分别是表锁和行锁。 /**Locktypes*/ #defineLOCK_TABLE16/*! 15 and a 15 FOR UPDATE,且 a 存在的值为 1、2、5、10、15、20,则将 (15,20]、(20, +∞] 的中 15、20 及其间隙锁住。
447 天前 / 码农UP2U
使用 Docker 来管理 MySQL、Redis 等各种中间件是十分方便的,无论是生产环境,还是开发环境都非常方便。今天来说一下我用 Docker 来管理 MySQL 时遇到的一个小坑。 在Docker 下部署 MySQL 在 Docker 下部署 MySQL 是很方便的,通过几条命令就可以轻轻松松的下载镜像并完成安装部署。 首先,拉取 MySQL 镜像: % docker pull mysql:latestlatest: Pulling from library/mysqla076a628af6f: Already existsf6c208f3f991: Pull complete88a9455a9165: Pull complete406c9b8427c6: Pull complete7c88599c0b25: Pull complete25b5c6debdaf: Pull c...
447 天前 / flyer0126
关于 MySQL 索引,对于研发同学,尤其是后端研发同学,一定不会陌生。我们工作中经常会用到 MySQL 数据库,就肯定会经常用到性能优化方面的设计和考量,常常用涉及到 MySQL 索引。但是关于 MySQL 索引,你真的用对了么? 对了,在开始正式知识点讲解之前,还需要来个不那么正式的自我介绍吧,哈哈哈~ 我多年后端研发经验,“混迹”于多个互联网大厂,专注软件架构技术研究学习,希望能够持续发挥自身多余的热量,将自己工作中的问题和技术总结输出,分享影响到更多的人。
462 天前 / 雨后天空
2018 年,我写过一篇关于 Clickhouse 的文章,这段内容在互联网上仍然很流行,甚至被多次翻译。现在已经过去两年多,同时 Clickhouse 的开发节奏仍然活跃: 上个月有 800 个合并的 PR ! 这难道没让你大吃一惊吗?或许需要一小时才能查看完这些变更日志和新功能描述,例如 2020 年:https://clickhouse.tech/docs/en/whats-new/changelog/2020/ 为了公平对比,ElasticSearch 仓库在同一个月有惊人的 1076 个合并 PR,同时在功能性方面,它的节奏也非常让人印象深刻! 我们正在将 Clickhouse 用于 ApiRoad.net 项目(这是一个 API 市场...
469 天前 / u561252
一 背景 容灾系统的重要目标在于保证系统数据和服务的“连续性”。当系统发生故障时,容灾系统能够快速恢复服务和保证数据的有效性。为了防止天灾人祸、不可抗力,在同城或异地建立对应的 IT 系统,其中最核心的工作是数据同步。 本文选取应用层容灾的场景中,对于哪些数据表需要跨云同步,哪些数据表不需要跨云同步的问题进行探讨。通过一个具体的案例,帮助读者更好地梳理同步表和过滤表的方法,以满足应用层的业务容灾需求。
475 天前 / 杀死那个程序员
点击上方"程序员历小冰",选择“置顶或者星标” 你的关注意义重大! 大家好,我是历小冰。 今天我们来详细了解一下主从同步延迟时读写分离发生写后读不到的问题,依次讲解问题出现的原因,解决策略以及 Sharding-jdbc、MyCat 和 MaxScale 等开源数据库中间件具体的实现方案。 写后读不到问题 MySQL 经典的一主两从三节点架构是大多数创业公司初期使用的主流数据存储方案之一,主节点处理写操作,两个从节点处理读操作,分摊了主库的压力。 但是,有时候可能会遇到执行完写操作后,立刻去读发现读不到或者读到旧状态的尴尬场景。
480 天前 / 三分恶
索引是 SQL 优化中最重要的手段之一,本文从基础到原理,带你深度掌握索引。 索引思维导图一、索引基础 1、什么是索引 MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构,索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。 通俗来讲,索引类似文章的目录,用来提高查询的效率。