![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mysql基础到高级
文章平均质量分 93
康小庄
代码不停,思考不止
展开
-
Mysql高级——Mysql8一主一从,多主多从搭建
修改 /etc/hosts文件。原创 2023-11-03 14:04:02 · 619 阅读 · 1 评论 -
Mysql高级——锁(2)
可以通过performance_schema.data_locks查看事务的锁情况,和MySQL5.7及之前不同,performance_schema.data_locks不但可以看到阻塞该事务的锁,还可以看到该事务所持有的锁。在InnoDB存储引擎中,LOCK_IS,LOCK_IX,LOCK_AUTO_INC都算是表级锁的模式,LOCK_S和LOCK_X既可以算是表级锁的模式,也可以是行级锁的模式。如果是行锁结构的话,在该结构末尾还放置了一堆比特位,比特位的数量是由上边提到的n_bits 属性表示的。原创 2023-10-20 09:29:15 · 125 阅读 · 0 评论 -
Mysql高级——锁(1)
在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制也为实现MySQL的各个隔离级别提供了保证。锁冲突也是影响数据库并发访问性能的一个重要因素。所以锁对数据库而言显得尤其重要,也更加复杂。原创 2023-10-19 11:57:54 · 138 阅读 · 0 评论 -
Mysql高级——事务(2)
事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由锁机制实现。而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。REDO LOG 称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG 称为回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。原创 2023-10-14 21:17:57 · 148 阅读 · 0 评论 -
Mysql高级——事务(1)
命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。能看出在 MySQL 中,只有InnoDB 是支持事务的。原创 2023-10-12 16:26:14 · 58 阅读 · 0 评论 -
Mysql高级——数据库调优策略(1)
如果MySql的连接数达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源,将会报错。值越大,可以加载到缓存区的索引和数据量越多,需要的磁盘读写就越少,修改参数为64G,磁盘读写次数可以大幅度降低,可以充分利用内存,释放一些CPU的资源。= 8M :表示联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。原创 2023-09-29 19:26:14 · 148 阅读 · 0 评论 -
Mysql高级——数据库设计规范(2)
刚刚的 ER 模型展示了电商业务的框架,但是只包括了订单,地址,用户,购物车,评论,商品,商品分类和订单详情这八个实体,以及它们之间的关系,还不能对应到具体的表,以及表与表之间的关联。我们设计的案例是电商业务,由于电商业务太过庞大且复杂,所以我们做了业务简化,比如针对SKU(StockKeepingUnit,库存量单位)和SPU(Standard Product Unit,标准化产品单元)的含义上,我们直接使用了SKU,并没有提及SPU的概念。相反,另外一边的实体通过这个关系,则只能对应唯一的一边的实体。原创 2023-09-26 22:18:14 · 281 阅读 · 0 评论 -
Mysql高级——数据库设计规范(1)
在关系型数据库中,关于数据表设计的基本原则、规则就称为范式可以理解为,一张数据表的设计结构需要满足的某种设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式规范化 vs 性能为满足某种商业目标 , 数据库性能比规范化数据库更重要在数据规范化的同时 , 要综合考虑数据库的性能通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间通过在给定的表中插入计算列,以方便查询在MySQL中,反范式化(Denormalization)是一种优化技术,用于提高数据库查询性能。原创 2023-09-23 16:01:38 · 130 阅读 · 0 评论 -
Mysql高级——索引优化和查询优化(3)
前面已经讲过区分度,区分度越高越好。因为区分度越高,意味着重复的键值越少。原创 2023-09-23 16:00:08 · 231 阅读 · 0 评论 -
Mysql高级——索引优化和查询优化(2)
理解方式一:索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。理解方式二:非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列(即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是, 索引列+主键 包含 SELECT 到 FROM之间查询的列。原创 2023-09-20 21:46:50 · 283 阅读 · 0 评论 -
Mysql高级——索引优化和查询优化(1)
学员表插50万条, 班级表插1万条。保证每条数据都不同。随机产生班级编号创建往class表中插入数据的存储过程classstu创建存储过程执行存储过程。原创 2023-09-20 16:49:45 · 135 阅读 · 0 评论 -
Mysql高级——性能分析工具(2)
完整的访问方法如下: system , const , eq_ref , ref , fulltext , ref_or_null ,index_merge , unique_subquery , index_subquery , range , index , ALL。从执行计划的结果中可以看出,MySQL打算将s2作为驱动表,s1作为被驱动表,重点关注s1的访问方法是eq_ref ,表明在访问s1表的时候可以通过主键的等值匹配来进行访问。是访问多次s2 表后累加起来的值,大家主要关注里边儿的。原创 2023-09-19 15:43:46 · 457 阅读 · 0 评论 -
Mysql高级——性能分析工具(1)
字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行动)。原创 2023-09-19 15:43:30 · 87 阅读 · 0 评论 -
Mysql高级——索引设计原则
① 冗余索引举例:建表语句如下我们知道,通过idx_name_birthday_phone_number 索引就可以对name 列进行快速搜索,再创建一个专门针对name 列的索引就算是一个冗余索引,维护这个索引只会增加维护的成本,并不会对搜索有什么好处。② 重复索引col2 INT,我们看到,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。原创 2023-09-17 14:24:46 · 110 阅读 · 0 评论 -
Mysql高级——索引创建和使用
MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。从功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。按照物理实现方式,索引可以分为 2 种:聚簇索引和非聚簇索引。按照作用字段个数进行划分,分成单列索引和联合索引。小结:不同的存储引擎支持的索引类型也不一样 InnoDB :支持 B-tree、Full-text 等索引,不支持 Hash索引;MyISAM : 支持 B-tree、Full-text 等索引,不支持 Hash 索引;原创 2023-09-15 11:13:16 · 2929 阅读 · 0 评论 -
Mysql高级——索引(2)
在MySQL数据库,将索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。索引按照物理实现方式,索引可以分为 2 种:聚簇(聚集)和非聚簇(非聚集)索引。我们也把非聚集索引称为二级索引或者辅助索引。原创 2023-09-14 16:47:50 · 124 阅读 · 0 评论 -
Mysql高级——索引(1)
索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。原创 2023-09-13 10:45:09 · 98 阅读 · 0 评论 -
Mysql高级——存储引擎
1). 连接层最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。2). 服务层第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。原创 2023-09-12 16:30:34 · 136 阅读 · 0 评论 -
Mysql高级——日志
错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。该日志是默认开启的,默认存放目录 /var/log/,默认的日志文件名为 mysqld.log。查看日志。原创 2023-09-12 15:27:22 · 87 阅读 · 0 评论