mysql
mysql
Bolon0708
昨日已成过往,明日未来可期。
展开
-
【MySQL】深入分析mysql为什么不推荐使用uuid或者雪花id作为主键
在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。一、mysql和程序实例1.1:要说明这个问题,我们首先来建立三张表,分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为主键,随机key作为.转载 2020-09-27 14:02:16 · 287 阅读 · 0 评论 -
InnoDB一棵B+树可以存放多少行数据?
一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是4k,而对于我们的InnoDB存储引擎也有自己的最小储存单元——页(Page),一转载 2020-06-28 10:47:35 · 284 阅读 · 0 评论 -
MySQL 三万字精华总结 + 面试100 问,吊打面试官绰绰有余(收藏系列)
❝写在之前:不建议那种上来就是各种面试题罗列,然后背书式的去记忆,对技术的提升帮助很小,对正经面试也没什么帮助,有点东西的面试官深挖下就懵逼了。个人建议把面试题看作是费曼学习法中的回顾、简化的环节,准备面试的时候,跟着题目先自己讲给自己听,看看自己会满意吗,不满意就继续学习这个点,如此反复,好的offer离你不远的,奥利给一、MySQL架构和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和..转载 2020-06-01 14:59:47 · 535 阅读 · 0 评论 -
【深入学习MySQL】MySQL的索引结构为什么使用B+树?
前言在MySQL中,无论是Innodb还是MyIsam,都使用了B+树作索引结构(这里不考虑hash等其他索引)。本文将从最普通的二叉查找树开始,逐步说明各种树解决的问题以及面临的新问题,从而说明MySQL为什么选择B+树作为索引结构。目录一、二叉查找树(BST):不平衡二、平衡二叉树(AVL):旋转耗时三、红黑树:树太高四、B树:为磁盘而生五、B+树六、感受B+树的威力七、总结一、二叉查找树(BST):不平衡二叉查找树(BST,Binary Search Tre转载 2020-05-31 17:18:16 · 376 阅读 · 0 评论 -
深入学习MySQL事务:ACID特性的实现原理
事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段。本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。一、基础概念事务(Transaction)是访问和更新数据库的程序执行单元;事务中可能包含一个或多个sql语句,这些语句要么都执行,要么都不执行。作为一个关系型数据库,MySQL支持事务,本文介绍基于MySQL5.6。首先回顾一下MySQL事务的基础知识。1.转载 2020-05-31 16:44:59 · 263 阅读 · 0 评论 -
谈谈为什么要拆分数据库?有哪些方法?
目录1. 为什么要拆分数据库?2. 什么是垂直切分?垂直切分解决了什么问题垂直切分不能解决什么问题3. 什么是水平切分?水平切分的用途水平切分的缺点4. 为什么先做水平切分,后作垂直切分?1. 为什么要拆分数据库?单体项目在构建之初,数据库的负载和数据量都不大,所以不需要对数据库做拆分,小型财务系统、文书系统、ERP系统、OA系统,用一个MySQL数据库实例...转载 2020-01-21 11:21:09 · 1386 阅读 · 0 评论 -
为什么我使用了索引,查询还是慢?
经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。另外插入一个题外话,个人认为团队要合理的使用ORM,可以参考我的另外一篇<ORM的权衡和抉择>。合理利用的是ORM在面向对象和写操作方面的优势,避免联合查询上可能产生的坑(当然如果你的Linq查询能力很强另当别论),因为ORM屏蔽了太多的DB底层的知识内容,...转载 2020-01-16 14:51:02 · 364 阅读 · 0 评论 -
两岸猿声啼不住,轻舟已过万重山(再见 MySQL 索引~)
前言有人谓,再见是何意?我曰:再见,既是相见时难别亦难,东风无力百花残的难舍难分;亦是,下次再见时,你我若初见般无悲画扇......好似知识,你理解它之后的告别,也因再次遇见它,别有一番风味......正文(tips:终于有图了)备注一:参考资料部分来自于掘金小册《从根上儿理解mysql》、极客时间《MYSQL45讲》、《高性能MYSQL》备注二:此次的图来源于在我...转载 2019-12-12 14:11:04 · 352 阅读 · 0 评论 -
再有人问你为什么MySQL用B+树做索引,就把这篇文章发给她
目录二叉查找树平衡二叉树B树B+树聚集索引 VS 非聚集索引利用聚集索引和非聚集索引查找数据利用非聚集索引查找数据总结索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我...转载 2019-11-04 14:57:30 · 267 阅读 · 0 评论 -
MySQL数据库-常用SQL优化技巧 十一式
本文中所提到的SQL优化技巧均是基于Mysql 索引 BTree类型 。将从以下几个方面介绍常用的SQL优化技巧:本文篇幅较长 ,建议先收藏再阅读,便于后续查阅。通常,我们在写完较为复杂的 SQL 时,一般会进行一下 MySQL 优化,我们要善用 EXPLAIN 查看 SQL 执行计划。Explain语法如下执行计划包含如下信息:应尽量避免在 WHERE 子句中使用...转载 2019-09-14 21:51:27 · 273 阅读 · 0 评论 -
你知道怎么分库分表吗?如何做到永不迁移数据和避免热点吗?
目录前言垂直拆分水平拆分分库分表方案hash取模方案range范围方案总结:如何永不迁移数据和避免热点? 根据服务器指标分配数据量(揭秘篇)方案思路方案设计核心主流程如何扩容系统设计前言中大型项目中,一旦遇到数据量比较大,小伙伴应该都知道就应该对数据进行拆分了。有垂直和水平两种。垂直拆分垂直拆分比较简单,也就是本来一个数据库,数据...转载 2019-08-28 16:14:16 · 150 阅读 · 0 评论 -
面试官:你对MySQL高性能优化有什么规范建议?
目录数据库命令规范数据库基本设计规范数据库字段设计规范索引设计规范常见索引列建议如何选择索引列的顺序避免建立冗余索引和重复索引(增加了查询优化器生成执行计划的时间)对于频繁的查询优先考虑使用覆盖索引索引SET规范数据库SQL开发规范数据库操作行为规范数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mys...转载 2019-08-14 21:11:13 · 129 阅读 · 0 评论 -
史上最全的数据库面试题,不看绝对后悔
目录一、基本概念1.主键、外键、超键、候选键2.为什么用自增列作为主键3.触发器的作用?4.什么是存储过程?用什么来调用?5.存储过程的优缺点?6.存储过程与函数的区别7.什么叫视图?游标是什么?8.视图的优缺点9.drop、truncate、delete区别10.什么是临时表,临时表什么时候删除?11.非关系型数据库和关系型数据库区别,优势比较?...转载 2019-08-07 13:29:00 · 764 阅读 · 0 评论 -
【Mysql】我以为我对Mysql索引很了解,直到我遇到了阿里的面试官
目录1、索引概念、索引模型2、聚簇索引、覆盖索引3、联合索引、最左前缀匹配4、索引下推、查询优化5、总结&感悟本文来自一位不愿意透露姓名的粉丝投稿,由Hollis整理并"还原"了面试现场。相信很多人对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构。因为索引是MySQL中比较重点的知识,相信很多人都有一定的了解,尤其是在面...转载 2019-07-23 11:26:12 · 254 阅读 · 1 评论 -
【MySQL】数据库两大神器【索引和锁】
目录一、索引1.1聊聊索引的基础知识1.2索引提高检索速度1.3索引降低增删改的速度1.4哈希索引1.5InnoDB支持哈希索引吗?1.6聚集和非聚集索引1.7索引最左匹配原则1.8=、in自动优化顺序1.9索引总结二、锁2.1为什么需要学习数据库锁知识2.2表锁简单介绍2.2行锁细讲2.2.1MVCC和事务的隔离级别2.3乐观锁和悲...转载 2019-07-23 11:15:22 · 210 阅读 · 0 评论 -
MySQL的锁
目录InnoDB 存储引擎MySQL 的事务InnoDB 常见的几种锁机制共享锁和独占锁(Shared and Exclusive Locks)意向锁(Intention Locks)记录锁(record Locks)间隙锁(Gap Locks)临键锁(Next-Key Locks)小结数据库的锁是在多线程高并发的情况下用来保证数据稳定性和一致性的一种机制...转载 2019-07-31 13:45:09 · 105 阅读 · 0 评论 -
【Mysql】Mysql基本架构及查询流程
目录mysql体系结构简单概述:常见的存储引擎:CSVArchiveMemory(heap)MyisamInnodbMySQL运行机理:1.mysql 客户端/服务端通信阶段:2.查询缓存阶段:3.查询优化处理阶段:mysql查询优化 -执行计划4.mysql查询执行引擎阶段:5.返回客户端阶段:如何定位慢SQL:mysql体系...转载 2019-07-19 16:56:56 · 223 阅读 · 0 评论 -
MySQL知识点总结
目录书籍推荐文字教程推荐视频教程推荐常见问题总结什么是MySQL?存储引擎字符集及校对规则索引查询缓存的使用什么是事务?事物的四大特性(ACID)并发事务带来哪些问题?事务隔离级别有哪些?MySQL的默认隔离级别是?锁机制与InnoDB锁算法大表优化一条SQL语句在MySQL中如何执行的MySQL高性能优化规范建议一条SQL语...转载 2019-06-25 10:26:05 · 1261 阅读 · 0 评论 -
SQL语句中LEFT JOIN、JOIN、INNER JOIN、RIGHT JOIN的区别
w3school的一套sql教程:http://www.w3school.com.cn/sql/index.asp left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录。right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录。inner join :内连接,又叫等值连接,只返回两个表中连接字段相等的行。full join :外连接,返回两个表...转载 2018-07-12 10:19:00 · 231 阅读 · 0 评论 -
mysql 数据库Event定时任务使用详解(Navicat 创建)
一、使用Navicat创建Event1、创建一个存储过程让定时任务Event调用:打开Navicat查询界面: 在上述存储过程中将自定义的sql语句填写到BEGIN与END之间。CREATE DEFINER=`root`@`%` PROCEDURE `scheduler_sync`()BEGIN SET @dateStr = DATE_FORMAT(DA...转载 2018-10-11 15:56:40 · 10512 阅读 · 0 评论 -
安装mysql时提示This application requires .NET framework 4.5.2的解决办法
安装mysql社区版的时候报这个错:this application requires .NET Framework 4.5.2 解决方法:到这个地址https://www.microsoft.com/en-us/download/details.aspx?id=42642下载Microsoft .NET Framework 4.5并安装后,在去安装mysql。 下载完成后,执...原创 2018-09-28 09:41:36 · 36812 阅读 · 6 评论 -
Navicat连接MySQL报错:2059
解释原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password。现在说第二种方式 1.命令行进入MySQL数据库2.输入以下指令,逐行输入,...转载 2018-09-28 11:19:42 · 2408 阅读 · 1 评论 -
项目中常用的19条MySQL优化
本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下:一、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方...转载 2019-01-25 14:01:43 · 156 阅读 · 0 评论 -
说说那些程序员应该遵守的数据库规范
本文主要说下关于数据库方面的规范,希望能够帮助到大家。1、首先是工具,我们用的是 Mysql数据库,工具是Workbench,这个工具是专门为Mysql设计的数据库建模工具,你可以用它进行设计和创建新的数据库图示,在windows上面我们大多用的是PowerDesiger,在mac上用workbench目前来看还是挺好用的,无论是建立数据库文档,ER图,数据库的迁移都还是很贴心的。...转载 2019-02-28 21:17:00 · 222 阅读 · 0 评论 -
mysql字符串区分大小写的问题
一、1、 建表时候设置字段为BINARY类型对这个表,缺省情况下,下面两个查询的结果是一样的:SELECT * FROM TABLE NAME WHERE name='clip';SELECT * FROM TABLE NAME WHERE name='Clip';MySql默认查询是不区分大小写的,如果需要区分他,必须在建表的时候,Binary标示敏感的属性.CREA...转载 2019-02-14 15:09:52 · 279 阅读 · 0 评论 -
mysql清空表数据并设置自增ID为1
mysql清空表数据后如何让自增ID仍从1开始?也就是说如何重排auto_increment重排auto_increment有2种方法:1、清空表时使用truncate命令,而不用delete命令sql语句:TRUNCATE TABLE table_name ;使用truncate命令的好处:1)、速度快 2)、可以对自增ID进行重排,使自增ID仍从1开...原创 2019-03-05 13:14:46 · 3429 阅读 · 0 评论 -
记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案
问题概述使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死。严重影响业务。问题前提:老系统,当时设计系统的人大概是大学没毕业,表设计和sql语句写的不仅仅是垃圾,简直无法直视。原开发人员都已离职,到我来维护,这就是传说中的维护不了就跑路,然后我就是掉坑的那个!!!...转载 2019-03-04 19:18:36 · 443 阅读 · 0 评论 -
mybatis在mapper.xml中怎么处理大于、小于、不等于号
第一种方法:使用转义字符大于号 > &gt; 大于等于号 >= &gt;= 小于号 < &lt; 小于等于号 <= &lt;= 与 & &amp; 单引号 " &apos; 双引号 ' &quo...原创 2019-03-15 15:02:07 · 8030 阅读 · 0 评论 -
mysql EXPLAIN用法和结果分析
目录1. 什么是explain?2. 执行计划各字段含义2.1 id2.2 select_type2.3 table2.4 type2.5 possible_keys 和 key2.6 key_len2.7 ref2.8 rows2.9 Extra2.9.1 Using filesort(九死一生)2.9.2 Using temporary...原创 2019-03-26 15:29:48 · 813 阅读 · 0 评论 -
MySQL索引优化分析
目录MySQL索引优化分析案例分析场景一:订单导入,通过交易号避免重复导单场景二,订单管理页面,通过订单级别和订单录入时间排序索引简介索引分类性能分析MySQL 自身瓶颈explain 分析sql语句性能下降的原因总结参考文献MySQL索引优化分析为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因...转载 2019-03-26 16:35:40 · 176 阅读 · 0 评论 -
一条SQL语句在MySQL中如何执行的
本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。目录一 MySQL 基础架构分析1.1 MySQL 基本架构概览1.2 Server 层基本组件介绍1) 连接器2) 查询缓存(MySQL 8.0 版本后移除)3) 分析器4) 优化器5) 执行器二 语句分析...转载 2019-04-11 16:12:45 · 200 阅读 · 0 评论 -
漫话:如何给女朋友解释什么是乐观锁与悲观锁
目录并发控制悲观锁乐观锁悲观锁实现方式乐观锁实现方式最近,我和女朋友商量好,我负责制定行程,她负责购买出行用品。相安无事,我正在各家比价中,不知道发生了什么,女朋友买买买竟然不高兴了。并发控制在《如何给女朋友解释什么是并发和并行》一文中我们介绍过并发和并行。当程序中可能出现并发的情况时,我们就需要通过一定的手段来保证在并发情况下数据的准...转载 2019-04-25 19:41:43 · 211 阅读 · 0 评论 -
Mysql-各种锁区分与【MVCC】
mysql的锁貌似有很多啊,查了大部分资料,什么表锁,行锁,页锁共享锁,排他锁,意向锁,读锁,写锁悲观锁,乐观锁。。哎呀怎么感觉好乱啊。那么把它好好整理总结下吧。后边还有对在innodb下的mvcc理解与举例,在并发量的访问下如何保持高效一致?简单易懂了解下,听朋友说大公司面试也爱问这个。表/行/页-锁:表级锁(table-level locking):MyISAM和MEMORY存储引擎行级锁(r...转载 2018-07-03 18:52:25 · 533 阅读 · 0 评论