![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 81
着力于MySQL原理和底层的探究
Coding Now
点点滴滴,皆是学问!
展开
-
Mysql数据引擎MyISAM和InnoDb
MyISAM:不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作是对整个表加锁;存储表的总行数;一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;采用非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性 InnoDb支持ACID的事务,支持事务的四种隔离级别;支持行级锁及外键约...原创 2018-12-18 21:27:37 · 150 阅读 · 0 评论 -
数据库索引
索引:用于提升数据库的查找速度索引是建立得越多越好吗 (No)➢数据量小的表不需要建立索引,建立会增加额外的索引开销➢数据变更需要维护索引,因此更多的索引意味着更多的维护成本➢更多的索引意味着也需要更多的空间问题:哈希(hash)比树(tree)更快,索引结构为什么要设计成树型?为了加快查找速度的数据结构,常见的有两类:(1)哈希,例如HashMap,查询/插入/修改...原创 2018-12-18 21:45:08 · 126 阅读 · 0 评论 -
从头捋一遍 MySQL 索引结构,索引没你想的那么难!
学习链接:https://mp.weixin.qq.com/s/0JkWDDx6fTaII0Jgo36Nqw原创 2019-12-16 14:52:43 · 199 阅读 · 0 评论 -
用单库自增键来生成id了,后期怎么分库?哎,这个坑大!
星球水友“写代码的”提问:沈老师,我们现在用户中心是单库单表,uid使用数据库自增主键,uid被很多业务关联,不能变化。现在用户中心数据量逐步变大,有分库需求了,如何由单库升级为多库,保持历史uid不变,并且新生成的数据不冲突,有什么好办法么?==问题描述完==应该有不少公司都会利用数据库“插入数据自动自增id”来作为业务id,这种方法会使得业务与id生成强...转载 2019-10-22 11:37:58 · 165 阅读 · 0 评论 -
事务已提交,数据却丢了,赶紧检查下这个配置!!!
问题:MySQL崩溃,重启后发现有些已经提交的事务对数据的修改丢失了,不是说事务能保证ACID特性么,什么情况下可能导致“事务已经提交,数据却丢失”呢?这个问题有点复杂,且容我系统性梳理下思路,先从redo log说起吧。画外音:水友问的是MySQL,支持事务的是InnoDB,本文以InnoDB为例展开叙述,其他数据库不是很了解,但估计原理是相同的。为什么要有redo log...转载 2019-10-16 16:43:54 · 219 阅读 · 0 评论 -
业务发展太快数据量太大怎么办?并发太高怎么办?--分库分表与mycat
最近在集中精力怼mysql数据库,今晚总结一下分库分表实现和mycat的使用:分库分表是什么??(参考文章https://blog.csdn.net/qq_41864967/article/details/90439932)分库分表一定是为了支撑高并发、数据量大两个问题的。我之前的几篇分库分表的文章也是讲的很清楚了。现在主要讲一下Mycat的使用与分库分表的关系。数据的切分分为两种...原创 2019-09-19 14:13:35 · 488 阅读 · 0 评论 -
Mysql优化相关
概述为什么要优化系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比如何优化设计数据库时:数据库表、字段的设计,存储引擎 利用好MySQL自身提供的功能,如索引等 横向扩展:MySQL集群、负载均衡、读写分离 SQL语句的优化(收效甚微)字段设计字段类型的选择,...原创 2018-12-31 22:08:18 · 4024 阅读 · 0 评论 -
一条SQL查询语句如何执行的???
首先介绍一下MySQL:mysql是关系数据库,但是说白了是一个软件。在我们复杂的软件世界中,大概分为那么两种软件,一种是CPU密集型,一种是I/O密集型。有这个思想很重要,比如面试官经常问你: redis为什么是单线程; 大数据word count用mapduce好吗; 这类问题,首先你就是要区分是CPU密集型还是I/O密集型。而作为一个数据库,显然是一个I/O密集型的软...转载 2019-05-06 23:12:42 · 172 阅读 · 0 评论 -
MySQL读写分离,主从赋值以及主从同步延时
有没有做MySQL读写分离?如何实现mysql的读写分离?MySQL主从复制原理的是啥?如何解决mysql主从同步的延时问题?高并发这个阶段,那肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是app,其实都是读多写少。所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多个从库来读,那不就可以支撑更高的读并发压力了吗?(1)如何实现mysq...翻译 2019-05-22 12:45:44 · 458 阅读 · 0 评论 -
MySQL小结及性能优化(查看执行计划)
逻辑架构图11.Connectors指的是不同语言中与SQL的交互2.Management Serveices & Utilities:系统管理和控制工具3.Connection Pool: 连接池*管理缓冲用户连接,线程处理等需要缓存的需求。*负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理...原创 2019-09-16 15:06:34 · 705 阅读 · 2 评论 -
MySQL的自增ID用完了怎么办???
以前就有过这样的疑问,最近在学习MySQL这一块,突然又想到了这个问题,就自己动手实验了一下,请看过程。先创建一张简单的表,插入一条数据create table test(id int unsigned auto_increment primary key);insert into test values(null);查看一下表情况,show create table te...原创 2019-09-18 13:02:31 · 920 阅读 · 0 评论 -
分库分表四:分库分表全局id主键
分库分表之后,id主键如何处理?分库分表之后必然要面对的一个问题,就是id咋生成?因为要是分成多个表之后,每个表都是从1开始累加,那肯定不对啊,需要一个全局唯一的id来支持。所以这都是你实际生产环境中必须考虑的问题。(1)数据库自增id这个就是说你的系统里每次得到一个id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个id。拿到这个id之后再往对应的分...翻译 2019-05-22 12:40:40 · 893 阅读 · 0 评论 -
分库分表三:设计可以动态扩容缩容的分库分表方案
如何设计可以动态扩容缩容的分库分表方案?(1)选择一个数据库中间件,调研、学习、测试(2)设计你的分库分表的一个方案,你要分成多少个库,每个库分成多少个表,3个库每个库4个表(3)基于选择好的数据库中间件,以及在测试环境建立好的分库分表的环境,然后测试一下能否正常进行分库分表的读写(4)完成单库单表到分库分表的迁移,双写方案(5)线上系统开始基于分库分表对外提供服务(...翻译 2019-05-22 11:35:02 · 672 阅读 · 2 评论 -
分库分表二:怎么进行分库分表以及数据迁移
有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?已经明白为啥要分库分表了,你也知道常用的分库分表中间件了,你也设计好你们如何分库分表的方案了(水平拆分、垂直拆分、分表),那问题来了,你接下来该怎么把你那个单库单表的系统给迁移到分库分表上去?友情提示假设,你现有有一个单库单表的系统,在线上在跑,假设单表有600万数据3个库,每个库里分了4...翻译 2019-05-22 11:29:25 · 3409 阅读 · 13 评论 -
分库分表一:由来和拆分
Q:为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?A:分库分表一定是为了支撑高并发、数据量大两个问题的。剖析:(1)为什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?)说白了,分库分表是两回事儿,大家可别搞混了,可能是光分库不分表...翻译 2019-05-22 11:22:03 · 261 阅读 · 0 评论