众所周知,数据库很容易成为应用系统的瓶颈。单机数据库的资源和处理能力有限,在高并发的分布式系统中,可采用分库分表突破单机局限。本文总结了分库分表的相关概念、全局ID的生成策略、分片策略、平滑扩容方案、以及流行的方案。1 分库分表概述在业务量不大时,单库单表即可支撑。 当数据量过大存储不下、或者并发量过大负荷不起时,就要考虑分库分表。1.1 分库分表相关术语读 ......
424
0
0
2022-12-12
1 回顾在MySQL的众多存储引擎中,只有InnoDB支持事务,所有这里说的事务隔离级别指的是InnoDB下的事务隔离级别。读未提交:一个事务可以读取到另一个事务未提交的修改。这会带来脏读、幻读、不可重复读问题。(基本没用)读已提交:一个事务只能读取另一个事务已经提交的修改。其避免了脏读,但仍然存在不可重复读和幻读问题。可重复读:同一个事务中多次读取相同的数 ......
418
0
0
2022-12-10
谁消耗了我的cpu?谁在消耗cpu?祸首是谁?用户用户空间CPU消耗,各种逻辑运算❝正在进行大量tps 函数/排序/类型转化/逻辑IO访问… ❞用户空间消耗大量cpu,产生的系统调用是什么?那些函数使用了cpu周期?IO等待等待IO请求的完成❝此时CPU实际上空闲 ❞如vmstat中的wa 很高。但IO等待增加,wa也不一定会上升(请求I/O后等待响应,但进 ......
392
0
0
2022-12-10
什么是事务?数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由开始和结束之间执行的全部数据库操作组成。这是百科的定义,也是我们在面试的时候最常回答的关键字。可以这么说:事务是数据库执行过程的一个逻辑单位,由一个有限的数据库操作序列组成。举例来说,当我们购 ......
512
0
0
2022-12-10
0 什么是事务事务(Transaction) 是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都 执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每 个事务结束时,都能保持数据一致性。同时,事务有着严格的地定义,必须满足四个特性,也就是我们一直说的ACID,但是,并不是说各种数据库就一定会满足四个特性,对于 ......
454
0
0
2022-12-10
数据库基础知识1. 为什么要使用数据库数据保存在内存优点:存取速度快缺点:数据不能永久保存数据保存在文件优点:数据永久保存缺点:1)速度比内存操作慢,频繁的IO操作。2)查询数据不方便数据保存在数据库1)数据永久保存2)使用SQL语句,查询方便效率高。3)管理数据方便2. 什么是SQL?结构化查询语言(Structured Query Language)简称 ......
526
0
0
2022-12-10
MySQL InnoDB 引擎现在广为使用,它提供了事务,行锁,日志等一系列特性,本文分析下 InnoDB 的内部实现机制,MySQL 版本为 5.7.24,操作系统为 Debian 9。MySQL InnoDB 的实现非常复杂,本文只是总结了一些皮毛,希望以后能够研究的更加深入些。1、InnoDB 架构Innodb 架构图InnoDB 的架构分为两块:内存 ......
365
0
0
2022-12-10
表要求:有PrimaryKey,或者unique索引结果:表id都会自增测试代码创建表CREATE TABLE names( id INT(10) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255) UNIQUE, age INT(10) ) 插入数据mysql> insert ......
382
0
0
2022-12-10
1、MySQL中myisam与innodb的区别MyISAM:不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作对整个表加锁;存储表的总行数;一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;采用非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。InnoDb:支持ACID的事务,支持事务 ......
542
0
0
2022-12-10
1.drop,delete与truncate的区别相同点:truncate和不带where子句的delete,以及drop都会删除表内的数据不同点:truncate会清除表数据并重置id从1开始,delete就只删除记录,drop可以用来删除表或数据库并且将表所占用的空间全部释放truncate和delete只删除数据不删除表的结构。drop语句将删除表的结 ......
516
0
0
2022-12-10
一个典型的互联网产品架构包含接入层、逻辑处理层以及存储层,其中存储层承载着数据落地和持久化的任务,同时给逻辑处理层提供数据查询功能支持。说到存储层就要说到数据库,数据库知识掌握程度也是面试考察的知识点。典型服务架构数据库分为关系型数据库和非关系型数据库,也就是我们常说的 SQL 和 NoSQL,这两个方向的数据库代表产品分别是 MySQL 和 Redis , ......
514
0
0
2022-12-10
MySQL中一共有 7 种日志,多数人只知道其中的 3 种。最近我在面试一个 DBA 时,得知一共有 7 种日志文件,今天我们一起来看看这些日志文件都有哪些作用,以帮助大家理解 MySQL 中的事物以及事物背后的原理。!MySQL中有七种日志文件,分别是:重做日志(redo log)回滚日志(undo log)二进制日志(binlog)错误日志(errorl ......
583
0
0
2022-12-10
概述什么是索引一本书 500 页的书,如果没有目录,直接去找某个知识点,可能需要找一会儿,但是借助前面的目录,就可以快速找到对应知识点在书的哪一页。这里的目录就是索引。所以,为什么会有索引?为了提高数据查询效率。常见索引算法最简单也最容易想到的索引算法就是有序数组了,我们创建一个数组,数组按照顺序排列,我们要查找某一条记录,使用二分法就可以快速得到(log ......
465
0
0
2022-12-10
日志是 mysql 数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志( binlog )和事务日志(包括 redo log 和 undo log ),本文接下来会详细介绍这三种日志。binlogbinlog 用于记录数据库执行的写 ......
452
0
0
2022-12-09
看如下一条sql语句:# table T (id int, name varchar(20)) delete from T where id = 10; MySQL在执行的过程中,是如何加锁呢?在看下面这条语句:select * from T where id = 10; 那这条语句呢?其实这其中包含太多知识点了。要回答这两个问题,首先需要了解一些知识 ......
378
0
0
2022-12-09