340 天前 / 全菜工程师小辉
MySQL 的并发控制是在数据安全性和并发处理能力之间的权衡,通过不同的锁策略来决定对系统开销和性能的影响。 基础知识为了后续的解释更加容易理解,这里列举一些基本概念的解释。 悲观锁悲观锁指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。 select...for update 是 MySQL 提供的实现悲观锁的方式。在悲观锁的情况下,为了保证事务的隔离性,其它事务无法修改这些数据。 现在互联网高并发的架构中,受到 fail-fast 思路的影响,悲观锁已经比较少见了。
346 天前 / 微观技术
大家好,我是 Tom 哥~ 今日寄语:努力的阶段,往往是最不养生的阶段! 一张千万级的数据表,删除了一半的数据,你觉得 B+ 树索引文件会不会变小? (答案在文章中!!) 我们先来做个实验,看看表的大小是如何变化的?? 做个实验,让数据说话 1、首先,在 mysql 中创建一张用户表,表结构如下: CREATETABLE`user`( `id`bigint(20)NOTNULLAUTO_INCREMENT, `user_name`varchar(128)NOTNULLDEFAULT''COMMENT'用户名', `age`int(11)NOTNULLCOMMENT'年龄', `address`varchar(128)COMMENT'地址', PRIMARYKEY(`id`) )ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COMMEN...
348 天前 / KevinYan
之前给大家介绍过, 我自己用的开发环境都是容器化的,只不过前两年不会用 K8,大部分都是用的 Docker 或者 Docker-Compose。随着这一年多对 K8 的学习和工作中的使用,一直有想法用 K8 做一套便携式开发环境,以后换电脑就不用再愁数据库、缓存、队列这些基础软件的安装了。正好下个月我就能换新的办公电脑啦,也不能拿『能用就行』的理由再拖延下去了。 如果问你 “ 平时开发程序依赖最多的基础软件时啥?”,我猜大部分人会回答:“MySQL 和 Redis”,毕竟万物皆是增删改查,整天做 CURD 的我们怎么能离开它们呢。
353 天前 / yes的练级攻略
大家好,我是 yes。 MySQL 面试题又更新啦! 请继续接招。 说说分库分表?随着用户量的激增和时间的堆砌,存在数据库里面的数据越来越多,此时的数据库就会产生瓶颈,出现资源报警、查询慢等场景。 首先单机数据库所能承载的连接数、I/O 及网络的吞吐等都是有限的,所以当并发量上来了之后,数据库就渐渐顶不住了。 再则,如果单表的数据量过大,查询的性能也会下降。因为数据越多 B+ 树就越高,树越高则查询 I/O 的次数就越多,那么性能也就越差。 因为上述的原因,不得已就得上分库分表了。
354 天前 / flyer0126
MySQL 全局锁会申请一个全局的读锁,对整个库加锁。 全局锁的一般使用场景是:全局逻辑备份。全局锁的实现方式有两种:// 第一种方法 Flush tables with read lock(FTWRL)// 第二种方法 setglobalreadonly=true 当数据库处于全局锁的状态时,其他线程的一下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(建表、索引变更、修改表结构等)和更新类事务的提交语句。 释放全局锁 unlock tables;来个示例吧~创建数据库 `test`CREATE TABLE `test` ( `name` varchar(32) NOT NULL DEFAULT '', `bid` int(10) unsigned NOT NULL DEFAULT '0')EN...
354 天前 / 微观技术
大家好,我是 Tom 哥~ 今日寄语:充满活力的新人,能让身边的人都重回初心,真是不可思议。 mysql 的 InnoDB 存储引擎 一棵 B+ 树可以存放多少行数据? (答案在文章中!!) 要搞清楚这个问题,首先要从 InnoDB 索引数据结构、数据组织方式说起。 我们都知道计算机有五大组成部分:控制器,运算器,存储器,输入设备,输出设备。 其中很重要的,也跟今天这个题目有关系的是存储器。 我们知道万事万物都有自己的单元体系,若干个小单体组成一个个大的个体。就像拼乐高一样,可以自由组合。
361 天前 / 白墨是个程序猿
前言大家好呀,我是 白墨,一个热爱学习与划水的矛盾体。 前两天在使用 C3P0 连接池时遇到问题,运行测试用的 DBUTlis 类抛出了异常,可耽误了我好些时间!记录一下差错经过。 问题出现异常如下: java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.项目配置如下: 首先是测试用的 DBUTil 类: public class DBUtil { static DataSource ds = new ComboPooledDataSource(); public static Connection getConn() throws SQLException { return ds.getConnection(); } public static DataSource ...
365 天前 / u128287
前言 MySQL 数据库承载了掌门绝大部分核心业务的数据存储,因此 MySQL 数据库的稳定运行至关重要。DBA 团队一直致力于保障数据库环境的平稳运行,编写有掌门 MySQL 数据库规范文档,也提供有掌门数据库查询上线运维平台。规范虽然很全面,但是如果不了解数据库原理,不知道规范带来的效率提升,开发人员并不一定会严格遵守,规范也就失去了意义。本篇文章旨在从数据库原理出发,从三个角度(建表、索引、SQL 语句)进行深入分析,在了解数据库底层原理的基础上,理解数据库规范、以及数据库优化方法。
368 天前 / 郭儿的跋涉
前情提要 MySQL 这两年越来越被开发者重视,市面上也出现了一些优秀的教程,使更多的人了解到了 MySQL 底层的逻辑。 但对于我们来说 MySQL 最基本最常用的查询语句的编写,仍然需要最扎实的基本功。 本文以一个简单的两表关联来讲解一个 SQL 语法。 MySQL 两个表进行关联,table1.a = table2.a,如果 a 字段可能出现 null 值,实际上查询结果可能并不是我们期望的。和一些有多年开发经验的老司机进行过沟通,有部分会采用间接的方式解决。
382 天前 / Hollis
GitHub 19k Star 的 Java 工程师成神之路,不来了解一下吗!之前我们已经详细介绍了关于索引的原理和索引的查询的原则,所谓工欲善其事必先利其器,各位在学习阶段一定要要循序渐进的来学习这块知识,千万不要眼高手低,一定要不急不躁,争取一个萝卜一个坑,学完后能一次性拿下这些知识点,然后再加以运用。 前面的文章我们讨论过,索引的设计要根据 WHERE 条件和 ORDER BY 还有 GROUP BY 后面的字段进行设计,至于原因具体在我前面的文章 MySQL 索引的原理有详细介绍。这里我们再简单概述下。
385 天前 / yes的练级攻略
大家好,我是 yes。 MySQL 面试题开始要更新啦! 请接招。 你们公司数据库有备份的吧?我:有的,因为单点故障的情况不可避免,所以我们公司有主从。面试官:那你知道主备、主从、主主有什么区别? 主备就是:主机和备机。 备机是不干活的,也就是不对外提供服务,只是默默地在同步主机的数据,然后等着某一天主机挂了之后,它取而代之! 至于切换的话主要有两种方式: 人工切换,得知主机挂了之后手动把备机切成主机,缺点就是慢。利用 keepalived 或者自己写个脚本来作监控,然后自动切换。主从就是主机和从机。
386 天前 / JAVA日知录
需要从数据库检索某些符合要求的数据,我们很容易写出 Select A B C FROM T WHERE ID = XX 这样的 SQL,那么当我们向数据库发送这样一个请求时,数据库到底做了什么? 我们今天以 MYSQL 为例,揭示一下 MySQL 数据库的查询过程,并让大家对数据库里的一些零件有所了解。 MYSQL 架构 mysql 架构 MySQL 主要可以分为 Server 层和存储引擎层。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图、函数等,还有个通用的日志模块 binlog 日志模块; 存储引擎层负责数据的存储和提取。
392 天前 / BloomingRose
本文根据靳洪兵老师在〖deeplus 直播第 265 期〗线上分享演讲内容整理而成。(文末有获取本期 PPT& 回放的方式,不要错过) 靳洪兵 美图 技术专家 美图用户产品研发部技术专家,主要负责美图秀秀社区服务研发,主导参与美图秀秀调度系统、内容中台等多个项目的研发与设计。在分布式系统、消息中间件等方面具有丰富经验; 曾就职于新浪微博,负责平台研发部消息中间件、配置服务等系统的研发与设计。
394 天前 / 会玩code
以下是结合网上及此前面试时遇到的一些关于 mysql 索引的面试题。若对 mysql 索引不太了解可先翻阅相关文章 大白话 mysql 之深入浅出索引原理 - 上大白话 mysql 之深入浅出索引原理 - 下什么是索引?索引类似书本的目录,查询书中的指定内容时,先在目录上查找,之后可快速定位到内容位置。在数据库中通常通过 B 树 / B + 树数据结构实现。 主键索引和非主键索引有什么区别?主键索引树中叶子节点存储的是整行数据,而非主键索引叶子节点上保存的是主键的值。
396 天前 / yes的练级攻略
我是小 M,在卡拉巴拉星球。 是一个立志建立 MySQL 帝国的男人。 1 上回说到我入职了 Y 公司,建了个叫 B+ 树的玩意来管理数据。 但是老板最后加了个需求,他需要通过姓名来查询用户的信息。 用户结构这。...我是拿用户的 ID 来排序组装成索引的呀。 如果查询条件是姓名的话,这个索引就用不上了,那就得每页都翻阅过去,这就是全表扫描了呀! 查询的速度又会降下来了! 我盯着手上的奶茶思考了一会儿。 没办法,只能根据姓名再建立一个索引了。 这个索引的目录页没啥问题,把 ID 改为姓名,按字母序存储姓名和页号即可。