MySQL数据库
主要包括增删改查,事务,索引及优化,锁
Mr_树先森
这个作者很懒,什么都没留下…
展开
-
【MySQL数据库高级】主从复制
Master配置使用命令行进入mysql:原创 2021-06-08 19:41:29 · 58 阅读 · 0 评论 -
【MySQL数据库高级】间隙锁,如何锁定一行,行锁总结,页锁
间隙锁如何锁定一行?begin;select * from tableName where a=? for update;// 要进行的操作。。。。。。。commit;在锁定某一行后,其他用户操作会被阻塞,直到锁定行的会话提交commit行锁总结:行锁分析:优化建议:页锁开锁和加锁时间介于表锁和行锁之间;会出现死锁;锁定粒度在表锁和行锁之间,并发度一般...原创 2021-06-08 19:21:47 · 124 阅读 · 0 评论 -
【MySQL数据库高级】锁概述,行锁,表锁
概述:分类:按操作来分 :读写锁读锁(共享锁):针对同一份数据,多个读操作可以同时进行不会互相影响写锁(排它锁):当前写操作没有完成前,他会阻断其他的读锁和写锁按对数据操作的粒度:表锁,行锁MyISAM表锁:1.读锁表锁特点:偏向于MyISAM存储引擎,开销小,加锁快;无死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低查看表加锁没有:show open tables;加锁:lock table A read,B write;解锁:unlock tables;用户1对A表原创 2021-06-08 16:23:24 · 95 阅读 · 0 评论 -
【MySQL数据库高级】show profile进行SQL分析,全局查询日志
show profile:查看当前数据库是否支持:show variables like 'profiling;或show variables like 'profiling%'’;开启 set profiling=on;执行SQL:SELECT * FROM emp GROUP BY id%10 LIMIT 150000;SELECT * FROM emp GROUP BY id%20 ORDER BY 5;查看执行过的SQL :show profiles;查看找到的慢SQL具原创 2021-06-08 15:05:09 · 89 阅读 · 0 评论 -
【MySQL数据库高级】批量插入数据脚本
批量插入数据脚本:建表员工表部门表设置参数log_bin_trust_function_creatorsshow variables like 'log_bin_trust_function_creators';set global log_bin_trust_function_creators=1;创建函数,保证每条数据都不一样:随机产生字符串(创建函数)DELIMITER $$CREATE FUNCTION rand_string (n INT) RETURNS原创 2021-06-08 14:28:53 · 796 阅读 · 0 评论 -
【MySQL数据库高级】慢查询日志
慢查询日志是什么?默认情况下,MySQL数据库没有开启慢查询日志,需要手动设置如果不是调优需要的话,一般不建议开启,因为会对性能带来影响,慢查询日志支持将日志记录写入文件查看是否开启:show variables like '%slow_query_log%';开启:set global slow_query_log=1; 只对当前数据库生效,MySQL重启后会失效日志位置多久会被记录?查看多久算慢:设置阈值时间:set global long_query_time=3;;需原创 2021-06-07 20:52:44 · 164 阅读 · 0 评论 -
【MySQL数据库高级】索引优化 in,exists,order by,group by
in,exists优化:永远小表驱动大表in,exists:select * from table where exists(subquery),可以理解为:将主查询的数据放到子查询里做条件验证,根据验证结果true,false来决定主查询的数据是否保留提示:Order by优化:order by 子句,尽量使用index方式排序,避免Filesort方式排序MySQL支持两种方式排序,filesort,index,index效率高,它指向MySQL扫描索引本身完成排序,files原创 2021-06-07 20:02:23 · 444 阅读 · 0 评论 -
【MySQL数据库高级】索引面试分析
建立索引:create index id_c1234 on test03(c1,c2,c3,c4):分析索引使用情况:explain select * from test03 where c1='a1';explain select * from test03 where c1='a1' and c2 = 'a2';explain select * from test03 where c1='a1' and c2 = 'a2' and c3 = 'c3';explain select *.原创 2021-06-07 19:00:02 · 100 阅读 · 0 评论 -
【MySQL数据库高级】索引优化
索引失效:建表建索引CREATE INDEX id_nap ON `staffs`(`name`,`age`,`pos`);2、最佳左前缀法则,如果索引了多列,需要遵守最佳左前缀法则。也就是查询从索引的最左前列开始并且不跳过索引中的列8、like问题:解决like ‘%字符串%’ 时索引不能使用的方法??使用覆盖索引...原创 2021-06-06 20:38:36 · 43 阅读 · 0 评论 -
【MySQL数据库高级】索引三表优化案例
建表:案例:EXPLAIN SELECT * FROM class LEFT JOIN book ON class.`card`= book.card LEFT JOIN phone ON book.card = phone.`card`;建立索引:CREATE INDEX id_card ON book(card);CREATE INDEX id_card ON phone(card);EXPLAIN SELECT * FROM class LEFT JOIN book ON cla原创 2021-06-06 18:07:25 · 89 阅读 · 0 评论 -
【MySQL数据库高级】索引两表优化案例
建表:案例:EXPLAIN SELECT * FROM class c LEFT JOIN book b ON c.`card` = b.`card`;右表建立索引:CREATE INDEX id_card ON book(card);EXPLAIN SELECT * FROM class c LEFT JOIN book b ON c.`card` = b.`card`;删除索引:DROP INDEX id_card ON book;左表建立索引:CREATE INDEX原创 2021-06-06 17:45:55 · 76 阅读 · 0 评论 -
【MySQL数据库高级】索引单表优化案例
建表:案例:1.查询category_id 为1,且comments大于1的情况下views最多的article_idEXPLAIN SELECT `id`,`author_id` FROM `article` WHERE `category_id` = 1 AND `comments`>1 ORDER BY `views` LIMIT 1;comments>1使用后出现了索引失效,导致后面的order by 数据库又进行了filesort排序,性能太低,需要优化建立索引:C原创 2021-06-06 17:08:28 · 82 阅读 · 2 评论 -
【MySQL数据库高级】索引性能分析 explain字段解释
Id:select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序三种情况a. id相同,执行顺序由上至下b. id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行c. id相同不同,同时存在select_type:有哪些?:Simple,primary,subquery,derived,union,union result查询的类型:主要是用于区别普通查询,联合查询,子查询等的复杂查询simple:简单的select查询,查询原创 2021-06-06 16:33:17 · 162 阅读 · 2 评论 -
【MySQL数据库高级】索引性能分析 explain是什么,能干嘛,怎么用
explain是什么?(查看执行计划):使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或表结构的性能瓶颈explain能干嘛?:表的读取顺序数据读取操作的数据类型那些索引可以使用那些索引被实际使用表之间的引用每张表有多少行被优化器查询 explain怎么用?:explain+SQL语句执行计划包含的信息:...原创 2021-06-06 13:16:04 · 106 阅读 · 0 评论 -
【MySQL数据库高级】索引性能分析Optimizer,常见瓶颈
MySQL Query Optimizer:MySQL的常见瓶颈:CPU:CPU在饱和的时候一般发生在数据装入内存或从磁盘读取数据的时候IO:磁盘I/O瓶颈发生在装入数据远大于内存容量的时候服务器硬件的性能瓶颈:top,free,iostat,vmstat来查看系统的性能状态...原创 2021-06-06 12:58:46 · 128 阅读 · 0 评论 -
【MySQL数据库高级】什么时候建索引,什么时候不建
哪些情况适合建索引?主键自动建立唯一索引频繁作为查询条件的字段应该创建索引查询中与其他表关联的字段,外键关系建立索引频繁更新的字段不适合建立索引(因为每次更新不止更新了记录还会更新索引)where条件里面用不到的字段不创建索引单值索引/复合索引的选择问题,who?(高并发下倾向创建组合索引)查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度查询中统计或分组的字段哪些情况不适合建索引?表记录太少经常增删改的表(提高了查询的速度,同时却降低了更新表的速度,因为更新时原创 2021-06-06 11:19:20 · 113 阅读 · 0 评论 -
【MySQL数据库高级】索引原理
索引结构:BTree索引:索引原理上图是B树的图,蓝色表示关键字,黄色表示孩子,而红色则是与关键字进行绑定的数据行,现在来解释一下为什么AVL可以完成的事情,为什么需要B树来完成: 在每一次比对查询是否正确的时候,因为数据量大,都是存在于磁盘上的,所以每次调取数据都需要完成一次磁盘IO,在操作系统层面来讲,内存中是以页为单位,磁盘是以块为单位,不论每次进行磁盘IO的数据量大小,最小都要以一个数据块为单位,这就造成了浪费,B树的高度会非常低,也就是说高度为几,则需要进行几次磁盘IO,真实环境中有转载 2021-06-06 11:01:31 · 85 阅读 · 0 评论 -
【MySQL数据库高级】索引是什么?优劣势,分类,语法
索引是什么?官方:索引(index)是帮助MySQL高效获取数据的数据结构。本质:索引是数据结构。排好序的快速查找数据结构。索引会影响where和order by 后面的子句(查找和排序)数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以特定的方式指向数据(二叉查找树)索引的目的:提高查找效率重点:数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。索引本身也很大,以索引文原创 2021-06-06 10:49:27 · 117 阅读 · 2 评论 -
【MySQL数据库高级】慢SQL原因,SQL执行顺序
SQL性能下降的原因:查询语句写的烂索引失效(单值索引,复合索引)单值索引CREATE INDEX idx_good_Goodsname ON good(Goodsname);复合索引CREATE INDEX idx_good_GoodsnameCategoryname ON good(Goodsname,Categoryname);关联查询太多join服务器调优以及各个参数设置(缓冲,线程数等)...原创 2021-06-04 20:42:13 · 102 阅读 · 1 评论 -
【MySQL数据库高级】 MySQL逻辑架构,存储引擎
MySQL逻辑架构:一、MySQL逻辑架构分为四层连接层、服务层、引擎层、存储层:二、MySQL执行周期MySQL的查询流程大致是:首先,MySQL客户端通过协议与MySQL服务器建连接,发送查询语句,先检查查询缓存,如果命中,直接返回结果,否则进行语句解析,也就是说,在解析查询之前,服务器会先访问查询缓存(query cache)——它存储SELECT语句以及相应的查询结果集。如果某个查询结果已经位于缓存中,服务器就不会再对查询进行解析、优化、以及执行。它仅仅将缓存中的结果返回给用户转载 2021-06-04 19:26:00 · 108 阅读 · 0 评论 -
【MySQL数据库】视图知识总结
视图:什么是视图 ?在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。视图的操作:创建视图修改视图删除和查看视图视图的更新视图和表的的比较练习...原创 2021-03-31 20:45:59 · 630 阅读 · 0 评论 -
【MySQL数据库】MySQL数据库常用语句汇总(二)
这篇主要包括插入,修改,删除,数据库的管理,表的管理,数据类型,常见约束,添加约束,修改约束,标识列。原创 2021-03-27 22:57:05 · 483 阅读 · 0 评论 -
【MySQL数据库】超详细MySQL安装及数据库配置教程
安装(相关安装包已上传,免费下载)1、双击安装包进入这个界面,点击next2、接受协议,点击next下一步3、选择Custom自定义模式,然后next下一步4、next下一步,5、点击Install安装,安装完成后,后面的是广告,点击两次next,一次finsh就安装好了。提示:以下是本篇文章正文内容,下面案例可供参考配置数据库1、安装完成后会弹出这个界面,这就是数据库的配置界面,点击next下一步开始配置。如果没有弹出,可以在任务栏找一下,如果还没有,可以到数据库安装目录下原创 2021-03-23 13:19:02 · 800 阅读 · 1 评论 -
【MySQL数据库】MySQL数据库常用语句汇总(一)
包含了SQL基础中查询涉及到的所有知识点,供大家复习学习。原创 2021-03-22 12:50:02 · 452 阅读 · 0 评论 -
【MySQL数据库】使用数据库连接池连接数据库的简单示范
标题:使用数据库连接池连接数据库的简单例子前言在实际开发过程中使用的一般都是使用数据库连接池连接数据库进行数据的操作,今天分享给大家连接方法,希望对大家有帮助。二、使用步骤目录我创建的是Javaweb项目,所以目录是这样的,具体在实际开发中因人而异,我要讲的是配置文件jdbc.properties一定要放在src目录下,数据库连接驱动和数据库连接池放在lib目录下,然后要对jar引入,不然是不能使用的。2.编写配置文件如下:username=你的数据库用户名password=数据库密码原创 2021-03-11 20:19:02 · 746 阅读 · 3 评论