首页 > 数据库 >MySQL-进阶

MySQL-进阶

时间:2024-02-06 11:56:53浏览次数:27  
标签:存储 进阶 SQL Tree 索引 MySQL 数据

一、MySQL体系结构
1.连接层:一些客户端和连接服务,完成连接处理、授权认证及相关操作
2.服务层:完成大多数核心服务的功能,比如SQL的分析和优化
3.引擎层:负责MySQL中数据的存储和提取
4.存储层:数据存储层,将数据存储在文件系统上,并完成与存储引擎的交互

二、存储引擎(MySQL的核心)
1.定义:存储数据、建立索引、更新和查询数据的实现方式 。
2.InnoDB:xxx.idb代表表名,最小单元为页(16kB)
(1)支持事务和ACID原则
(2)行级锁,提高并发访问性能、
(3)支持外键foreign key约束,保证数据的完整性和正确性
3.MyISAM
(1)不支持事务和外键
(2)只支持表锁,不支持行级锁
(3)访问速度快
4.Memory
(1)表数据存储在内存中作为缓存表或临时表
(2)hash索引

三、索引
1.定义:满足特定查找算法的数据结构,这些数据结构以特定方式指向数据,从而在这些数据结构上实现高级查找算法。无索引会执行全表扫描,表太大时性能会很低。
2.优点和缺点:大大提高了查询效率,但是也占用空间,降低更新表的速度。
3.种类:B+Tree索引、hash索引、R-Tree索引(空间索引)、全文索引
4.B+Tree索引(带有顺序指针的B+Tree)
(1)B Tree:多叉平衡查找树
(2)B+Tree:叶子结点形成单项链表,非叶子节点仅起到索引作用,具体数据都是在叶子节点存放的
5.hash索引
(1)hash碰撞用链表解决
(2)不支持范围查询和排序操作,查询效率很高

四、索引分类
1.主键索引(关键字primary,自动创建,只能有一个)、唯一索引(unique)、常规索引、全文索引(fulltext)
2.根据索引存储形式分为聚集索引、二级索引
(1)聚集索引的选取:默认为主键索引,否则为第一个唯一索引,都没有的话会自动生成一个rowid座位隐藏的聚集索引
(2)聚集索引的叶子节点下挂这这一行的数据;二级索引叶子结点下挂着该字段值对应的主键值
(3)查找过程:先根据字段在二级索引中找到主键值,再根据主键值到聚集索引中找到数据
(4)语法:CREATE INDEX idx_user_name ON tb_user(name);

五、存储过程
1.定义:事先经过编译存储在数据库中的一段SQL语句的集合,其思想就是SQL语言层面的代码封装与复用
2.特点:封装与复用、可以接收和返回参数、减少网络交互并提高效率
3.语法

--创建
create procedure 存储过程名称(参数列表)
begin
  SQL语句    
end;  
--调用  
call 存储过程名称(参数)

六、锁
1.全局锁:对整个数据库加锁,一般用于做全库的逻辑备份
2.表级锁:每次锁住整张表,锁定力度大,发生锁冲突的概率最大,并发度最低
(1)表锁:表共享锁(读锁)、表排他锁(写锁)
加锁:lock tables 表名... read/write;释放锁:unlock tables
(2)元数据锁:为了避免DML和DDL冲突保证读写的正确性
(3)意向锁:使表锁不用检查每行数据是否加锁,减少表锁的检查。
(4)意向共享锁(IS):与表锁共享锁兼容,与表锁排他锁互斥;意向排他锁(IX):与读写锁都互斥,意向锁直之间不会互斥
3.行级锁:每次锁住对应的行数据,锁定粒度小,锁冲突概率低,并发度高
共享锁(S)、排他锁(X)

七、解决慢查询:慢查询是指执行时间较长的SQL查询语句,可能导致响应时间延迟。
1.使用合适的索引
2.大表尽量避免全表扫描
3.使用覆盖索引,少使用select *

标签:存储,进阶,SQL,Tree,索引,MySQL,数据
From: https://www.cnblogs.com/fly-smart/p/18009477

相关文章

  • 华为云软件开发生产线CodeArts开发者实践8件套——开发者的进阶宝典!
    华为云软件开发生产线CodeArts是一站式DevSecOps平台,集华为多年研发实践,前沿研发理念,领先研发工程能力于一体,覆盖软件开发全生命周期,开箱即用,为您提供软件开发的一切。为帮助开发者快速上手CodeArts,我们汇聚了精品视频课程、在线动手实验、职业认证及丰富示例代码,助您扫平产品使用......
  • java实现导出mysql数据库表信息
    java实现导出mysql数据库表信息,导出信息包含:数据库用户名,表英文名,表中文名,表业务描述,字段数量等等packagesrc.main.biz.ucenter.utils;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.ss.usermodel.Workbook;impor......
  • 【转帖】解决Java/MySQL性能问题的思路
    plantegg.github.io/2023/08/28/解决问题思路/ 10年前写的,重新发一下系统性能问题CPU(基本上WEB服务器没有多少IO,主要是CPU有瓶颈)top/vmstat观察CPU使用率,Load负载,r/b线程数量等;IO(数据库大多数时候瓶颈是IO,主要是索引没建好;如果数据库CPU紧张的话,检查一下是不是orderb......
  • 安装mysql
    见原文:https://blog.csdn.net/bugu_hhh/article/details/130625482 二、navicat访问不让连接的问题:授权问题如果你想允许任何主机连接到你的MySQL服务器,你可以创建一个用户并为其授予全局访问权限。以下是如何完成的CREATEUSER'your_username'@'%'IDENTIFIEDBY'your......
  • 耗时一个月我问遍了身边的大佬,零基础自学Java的路线,适用程序员入门&进阶,Java学习路线,2
    作为一个有志于成为Java程序员的你,或许正处在技术生涯的起点,或许已经走过了入门的道路,期待跨越进阶的门槛?无论处于哪个阶段,一条明确的学习路线都至关重要,通过向众多行业大佬请教、反复探索和实践,总结出一套适用于零基础自学者大学四年Java学习路线,也同样适用于从初级到研发专家的学......
  • MySQL中复制表(创建表的副本、备份表)
    1.第一种复制表结构和数据--复制表的结构和数据,但是不会复制表的约束、外键、触发器、索引等createtabletest_duplicationasselect*fromtest;--此处的as可以省略2.第二种只复制表的结构createtabletest_duplicationasselect*fromtestwhere1=0;--此......
  • MySQL存储引擎-InnoDB行格式
    MySQL存储引擎-InnoDB行格式mysql作为一款主流的关系型数据库,是以记录为单位向表中插入数据的。目前为止,Innodb共支持COMPACT、REDUNDANT、DYNAMIC、和COMMPRESSED四种行格式。在MySQL5.7及以上版本,默认采用DYNAMIC格式。DYNAMIC与COMPACT格式基本一致,下文中我们会介绍区别。因......
  • PowerDesigner 导出mysql
    首先打开powerdesigner,可以通过文件打开一个项目或者直接双击项目通过powerdesigner进行打开。修改导出数据库类型。点击工具栏上的“Database”,选择“ChangeCurrentDBMS”进行修改导出脚本类型,可以选择mysql、sqlserver/oracle、db2等主流的数据库。在DBMS中点击下拉菜单,选择......
  • MySQL常用图形管理工具
    MySQL图形化管理工具极大地方便了数据库的操作与管理,常用的图形化管理工具有MySQLWorkbench、phpMyAdmin、Navicat、MySQLDumper、SQLyog、MySQLODBCConnector。其中,phpMyAdmin和Navicat提供中文操作界面;MySQLWorkbench、MySQLODBCConnector、MySQLDumper为英文界面。下......
  • MySql聚集索引和非聚集索引的区别
    MySql中的聚集索引和非聚集索引主要体现在以下几个方面:1.存储方式:聚集索引的叶子节点存储的是整行数据,非聚集索引叶子节点存储的是键值和整行的标识。2.索引结构:聚集索引的索引结构于数据表的物理结构相同,非聚集索引的索引结构与数据表的物理结构不同。   在数......