MySql全卷
文章平均质量分 80
MySQL性能及架构
时空恋旅人
坚持不懈的学习态度和坚韧的人生品质
展开
-
MySQL锁总结
目录1.锁分类2.InnoDB中的锁与索引 编辑3.InnoDB中如何加锁?4.显示锁的业务场景5.InnoDB中行锁的实现:6.加锁7.实际SQL语句锁的分析8.死锁模拟 锁分很多的类别,我们先来看看锁在不同维度上的分类 以操作粒度区分:表级锁:每次操作锁住整张表。锁定的粒度大、开销小、加锁快;不会发生死锁,但发生锁冲突的概率极高,并发度最低,应用在InnoDB、MyISAM、BDB中;行级锁:每次操作锁住一行数据。锁定的粒度小、开销大、加锁慢;会出现死锁,发生锁冲突的概率极低,并发度最原创 2022-06-16 22:48:56 · 502 阅读 · 0 评论 -
MySQL InnoDB内存结构之Buffer Pool
缓冲池是主内存中的一个区域,InnoDB 在访问时缓存表和索引数据。 缓冲池允许直接从内存中访问经常使用的数据,从而加快处理速度。 在专用服务器上,高达 80% 的物理内存通常分配给缓冲池。为了提高大容量读取操作的效率,缓冲池被划分为可能包含多行的页面。 为了缓存管理的效率,缓冲池被实现为页链表; 很少使用的数据使用最近最少使用 (LRU) 算法的变体从缓存中老化。............原创 2022-06-08 17:53:43 · 338 阅读 · 0 评论 -
SQL 查询优化
1.如何获取有性能问题的SQL2.慢查询日志3.通过实时的方法来获取慢查询日志的sql 查询出在服务器中执行时间超过60S的sql,实时发现具有性能问题的SQL4.SQL的解析预处理以及生成执行计划 Mysql 服务器处理插叙请求的整个过程 想要从缓存中命中该SQL相当的困难,查询的SQL必须和缓存的sql完全一致,有一个字节不同都无法命中缓存,并且缓存会加锁,对于一个读写频繁的系统使用查询缓存会降低查询处理的效率。建议不要使用查询缓存...原创 2021-05-18 22:46:11 · 113 阅读 · 1 评论 -
索引的优化策略
1.索引列上不能使用表达式或者函数2.前缀索引和索引列的选择性 索引的最大宽度767个字节,前缀索引就是取字符串的一部分来建立索引,3.联合索引如何选择索引列的先后顺序原创 2021-05-16 22:23:32 · 1132 阅读 · 5 评论 -
数据库索引优化(Betree索引和Hash索引)
当表中的数据不多的时候,查询的频率比较低的情况下索引的作用还不是太明显,因为这个时候表中的数据差不多会完全缓存到内存中,所以就算是进行全表扫描也不会太慢。但是当数据量太大,内存不能完全缓存所有数据的时候,所以的作用就会显得越来越重要。Mysql 所支持的索引类型,索引的是在mysql的存储引擎层实现的 不是在mysql服务器层实现的,所以,不用的存储引擎支持不同的索引。B-tree是常见的索引实现,通常都是b+tree来实现,他的特点:1.它是一种平衡的查找树,2.每一个叶子到根部的距离都.原创 2021-05-11 21:38:01 · 1027 阅读 · 0 评论 -
Mysql数据结构优化
1.数据库结构优化的目的 2.如何为表中的字段选择合适的数据类型: 在对数据进行比较,比如说查询条件啊,join条件,这种产生关联排序时,处理的速度是和当前的这种排序规是相关的,数字和二进制呢是不需要参照这种字符串这种字典排序规则的。其处理是按照二进制的大小来进行的,另外,在数据的存贮中是以页为单位的,innodb中一页为16K,列的长度越小呢,在页中能容纳的数据行就越多,那么查询的时候加载宽度小的数据比宽度大的数据页数就少,从而减少了磁盘IO,有利于性能的提升。...原创 2021-05-10 21:58:29 · 215 阅读 · 0 评论 -
MySQL全卷
1.MySQL从0开始学--01(数据类型,基本语法,单行函数)2.MySQL从0开始学--02(数据库三范式,分组函数与Group By,子查询,DML语句)3.MySQL从0开始学--03(Mysql优化的基础知识)1.SQL语句的使用技巧--01(JOIN)2.SQL语句的使用技巧--02(MYSQL 行转列,序列号,删除重复数据)MySQL 的表设计1.高性能MySql--01(数据库索引)2.高性能MySql--02(SQL的优化思路索引和锁........原创 2021-03-24 21:21:01 · 159 阅读 · 0 评论 -
MySQL从0开始学--03(Mysql优化的基础知识)
1.数据库优化得目的2.可以从哪些方面进行数据库优化3.如何发现有问题得SQL,Mysql慢查询日志 第一步看看有没有开启慢查询得日志:‘ show VARIABLES like '%slow_query_log%' OFF表示没有开启 第二步,看看记录未使用索引的查询的设置开了吗? SHOW VARIABLES LIKE '%lo...原创 2021-03-24 21:11:42 · 98 阅读 · 0 评论 -
MySQL学习--02(数据库三范式,分组函数与Group By,子查询,DML语句)
1.数据库的三范式 使用范式的根本目的是:减少数据冗余,尽量让每个数据只出现一次,获取数据时通过 join 拼接出最后的数据。 一范式(1NF):域应该是原子性的,即数据库表的每一列都是不可分割的原子数据项。第一条范式好理解,属性不可拆分。 二范式(2NF)是建立在一范式的基础上的。概念是每个非主属性都完全函数依赖于主码。只要数据列中出现数据重复,就要把表拆分开来。...原创 2021-03-24 21:10:02 · 196 阅读 · 0 评论 -
MySQL学习--01(数据类型,基本语法,单行函数)
目录1.Mysql的数据类型2.Select3.NULL4.字符串的连接5.WHERE6.单行函数1.Mysql的数据类型 对于字符串类型的数据,有多少个字节就能存多少个汉字或者字符或者数字。char和varchar都是用来存储字符串的,但是他们保持和检索的方式不同。InnoDB存储引擎:建议使用VARCHAR类型。对于InnoDB数据...原创 2020-02-02 14:36:04 · 220 阅读 · 0 评论 -
SQL语句的使用技巧--02(MYSQL 行转列,序列号,删除重复数据)
目录1.行转列,列转行2.如何生成唯一序列号3.如何删除重复数据1.行转列,列转行 场景1:报表统计,汇总显示1.报表统计 2.汇总显示 练习: 实现的方法:1.使用自连接的方式实现行转列(效率不高,复杂,难扩展) 还有一个是...原创 2020-01-15 22:02:25 · 428 阅读 · 0 评论 -
SQL语句的使用技巧--01(JOIN)
目录1.SQL语句分类 2.如何正确使用JOIN 3.与JOIN相关的技巧1.SQL语句分类 2.如何正确使用JOIN 表:内连接: 外连接之Left Outer Join: 左外连接的两种使用场景,注意地位中优化了 NOT IN,因为他避免了使用它。 例子:外连接之 Right Oute...原创 2020-01-13 22:06:56 · 196 阅读 · 0 评论 -
Mysql性能管理及架构设计--01(影响数据库的性能的因素)
1.影响Mysql性能的因素数据库服务器的硬件 服务器所使用的操作系统 数据存储引擎(MyISAM不支持事务,表级锁。InnoDB支持事务,行级锁) 数据库参数配置(影响比前三个大) 数据库表结构的涉及和SQL语句(比前面四个都大很多)所以重点就是这个2.数据库服务器硬件CPU资源 如何选择CPU?最理想的当然是最高的频率和最大的核心数,但是成本太TM高了。...原创 2019-12-17 00:18:52 · 183 阅读 · 0 评论 -
MySql5.7以上使用Group By报错
1.报错的信息SQL语句:这是一个根据Code分组再根据order排序再取排序后的第一条数据的sql语句 SELECT m.* FROM ( SELECT nms.ID, nms.NOTIFY_TYPE, nms.`CODE`, nms.PROJECT_ID, ...原创 2019-12-10 22:45:45 · 684 阅读 · 2 评论 -
Mysql三十六条军规(转载)
1.mysql 三十六条军规为转载文章,原文链接在博客后面 写在前面的话:总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。(一)核心军规(1)不在数据库做运算:cpu计算务必移至业务层(2)控制单表数据量:单表记录控制在1000w(3)控制列数量:字段数控制在20以内(4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据(5)拒绝3B:拒绝大sq...原创 2019-01-09 17:14:35 · 3319 阅读 · 10 评论 -
高性能MySql--02(SQL的优化思路索引和锁)
1.SQL的优化思路1.选择最有效率的表名顺序 数据库的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表将被最先处理 在FROM子句中包含多个表的情况下: 如果三个表是完全无关系的话,将记录和列名最少的表,写在最后,然后依次类推 也就是说:选择记录条数最少的表放在最后 如果有3个以上的表连接查询: 如果三个表是有关系的话...原创 2019-07-11 13:50:31 · 184 阅读 · 0 评论 -
SQL练习
连接:https://blog.csdn.net/fashion2014/article/details/788262991.sql如下–1.学生表Student(s_id,s_name,s_birth,s_sex) --学生编号,学生姓名, 出生年月,学生性别–2.课程表Course(c_id,c_name,t_id) – --课程编号, 课程名称, 教师编号–3.教师表T...原创 2019-07-11 22:04:57 · 1017 阅读 · 0 评论 -
高性能MySql--01(数据库索引)
1.什么是索引? 索引是对数据库表中一列或多列值进行排序的一种结构,使用索引可以提高数据库中特定数据的查询速度,索引是一个单独的,存储在磁盘上的数据结构,它包含着对数据表里所有记录的引用指针。索引是在存储引擎中实现的,每种存储引擎的索引也不一定完全相同。MySql中索引的存储类型有两种:Btree和Hash索引的优缺点: 索引的分类:............原创 2019-01-07 14:56:56 · 418 阅读 · 0 评论