mysql
文章平均质量分 89
wang_nian
不以物喜 不以己悲 生于忧患 死于安乐
展开
-
mysql索引
1. MySQL数据库为什么要使用B+TREE作为索引的数据结构?1.1 二叉树为什么不可行对数据的加速检索,首先想到的就是二叉树,二叉树的查找时间复杂度可以达到O(log2(n))。下面看一下二叉树的存储结构:二叉树搜索相当于一个二分查找。二叉查找能大大提升查询的效率,但是它有一个问题:如果我们现在的数据只包含1, 2, 3, 4,就相当于链表,相当于全表扫描。2.2 平衡二叉树为什么不可行为了解决二叉树存在线性链表的问题,会想到用平衡二叉查找树来解决。下面看看平衡二叉树是转载 2021-03-04 11:11:08 · 225 阅读 · 1 评论 -
集群中数据库主从同步
数据库集群,读写分离现在可以说是项目必备的了,但是我们如何保证其每个数据库的数据一致性?1半同步复制 简单的说就是: 主库发生增删改操作的时候,会等从库及时复制了并且通知了主库, 才会把这个操作叫做成功. 优点:保证数据一致性 缺点:就是会慢专业的讲: 半同步复制,是等待其中一个从库也接收到Binlog事务并成功写入Relay Log之后,才返回Commit操作成功给客户端;如此半同步就保证了事务成功提交后至少有两份日志记录,一份在主库Binlog上,另一份在从库的Rel...原创 2020-12-04 11:06:36 · 746 阅读 · 0 评论 -
Mysql索引(面试)
1索引概念、索引模型我们是怎么聊到索引的呢,是因为我提到我们的业务量比较大,每天大概有几百万的新数据生成,于是有了以下对话:Q:每天几百万数据,一个月就是几千万了,那你们有没有对于查询做一些优化呢?A:我们在数据库中创建了一些索引(我现在非常后悔我当时说了这句话)Q:那你能说说什么是索引吗?A:索引其实是一种数据结构,能够帮助我们快速的检索数据库中的数据Q:那么索引具体采用的哪种数据结构呢?A:常见的MySQL主要有两种结构:Hash索引和B+ Tree索引,我们使用的是Inn.原创 2020-10-15 18:06:37 · 107 阅读 · 0 评论 -
mysql分表、分库、分片、分区
一、ShardingSharding 是把数据库横向扩展(Scale Out)到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。Shard这个词的意思是“碎片”。如果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据库的碎片(DatabaseShard)。将整个数据库打碎的过程就叫做sharding,可以翻译为分片。形式上,Sharding可以简单定义为将大数据库分布到多个物理节点上的一个分区方案。每一个分区包含数据库的原创 2020-09-19 14:47:50 · 632 阅读 · 0 评论 -
MySql事务及隔离级别、传播行为
READ_UNCOMMITTED :该隔离级别表示一个事务可以读取另一个事务修改但还没有提交的数据。该级别不能防止脏读和不可重复读,因此很少使用该隔离级别。READ_COMMITTED :该隔离级别表示一个事务只能读取另一个事务已经提交的数据。该级别可以防止脏读,这也是大多数情况下的推荐值。REPEATABLE_READ :(mysql默认)该隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同。即使在多次查询之间有新增的数据满足该查询,这些新增的记录也会被忽略。该级别原创 2020-09-14 17:03:49 · 324 阅读 · 0 评论 -
MySql事务实现原理
事务想要做到什么效果?按我理解,无非是要做到可靠性以及并发处理可靠性:数据库要保证当insert或update操作时抛异常或者数据库crash的时候需要保障数据的操作前后的一致,想要做到这个,我需要知道我修改之前和修改之后的状态,所以就有了undo log和redo log。并发处理:也就是说当多个并发请求过来,并且其中有一个请求是对数据修改操作的时候会有影响,为了避免读到脏数据,所以需要对事务之间的读写进行隔离,至于隔离到啥程度得看业务系统的场景了,实现这个就得用MySQL 的隔离级别。下原创 2020-09-10 16:17:00 · 106 阅读 · 0 评论 -
SQL常用语句总结
1、给已有的表添加字段:alter table car_original_category_new add uid varchar(64) DEFAULT NULL COMMENT '唯一编号';原创 2020-08-11 16:12:11 · 122 阅读 · 0 评论 -
MySql数据库InnoDb原理介绍
InnoDB后台有多个不同的线程,用来负责不同的任务。主要有如下:Master Thread 这是最核心的一个线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括赃页的刷新、合并插入缓冲、UNDO 页的回收等. IO Thread 在 InnoDB 存储引擎中大量使用了异步 IO 来处理写 IO 请求, IO Thread 的工作主要是负责这些 IO 请求的回调处理。 Purge Thread 事务被提交之后, undo log 可能不再需要,因此需要 Purge Thre..转载 2020-08-06 11:13:45 · 340 阅读 · 0 评论 -
SQL中not in 查不出数据
select uid, `name` from cars_info_collection_new where `code` not in (select mc_id from car_original_category );用这句话一直查不出数据,select uid, `name` from cars_info_collection_new where not exists (select mc_id from car_original_category where mc_id=`code`).原创 2020-08-04 18:46:11 · 1052 阅读 · 0 评论