随笔分类 -  剖析MYSQL

一文读懂存储过程
摘要:0 导读 经常听别人说,“调用一个存储过程“,“把处理过程改写为存储过程之后就快了”此类的话,本篇文章我们来聊一聊存储过程。将从以下几个方面去描述存储过程。 1 存储过程解决了什么样的问题? 我们看这样一个场景:假设用户现在正在进行下单操作,那你的数据库需要做这些事。 1)核对保证库存中有对应的商品 阅读全文

posted @ 2023-03-19 22:31 Love&Share 阅读(815) 评论(0) 推荐(1) 编辑

order by是怎样工作的?
摘要:看看我们的t表定义是这样的: CREATE TABLE `t` ( `id` int(11) NOT NULL, `city` varchar(16) NOT NULL, `name` varchar(16) NOT NULL, `age` int(11) NOT NULL, `addr` varc 阅读全文

posted @ 2022-03-28 22:23 Love&Share 阅读(115) 评论(0) 推荐(0) 编辑

count(*)这么慢,我该怎么办?
摘要:1)计算一个表有多少行数用什么命令? select count(*) from t 2)count(*)底层是怎样实现的? 在MYISAM中,是把这个总行数存到磁盘中去的,要的时候直接去读就行,特别快。 而在InnoDB引擎中,这个总数是需要去一行一行的扫描表,然后累加起来看有多少行。所以当数据量大 阅读全文

posted @ 2022-03-24 15:11 Love&Share 阅读(561) 评论(0) 推荐(0) 编辑

为什么明明表数据删掉一半,表文件大小不变?
摘要:1)表结构和表数据是怎样放置的? 8.0之前啊,表结构是放在.frm为后缀的文件中。8.0之后呢,可以放在了系统数据表中。 2)先来 看看参数innodb_file_per_table的含义是怎么? 当值为off的时候,表示我的文件数据是放在共享表中的。 当值为on的时候,那文件数据就是单独放在一个 阅读全文

posted @ 2022-03-23 15:30 Love&Share 阅读(178) 评论(0) 推荐(0) 编辑

为什么我的MySQL会“抖”一下?
摘要:不知道你有没有遇到过这样的场景,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。 1)InnoDB 在处理更新语句的时候与磁盘有关的操作是什么? 写日志 2)这个日志叫作什么? redo log(重做日志) 阅读全文

posted @ 2022-03-15 23:26 Love&Share 编辑

怎么给字符串字段加索引?
摘要:假设,你现在维护一个支持邮箱登录的系统,用户表是这么定义的: create table SUser( ID bigint unsigned primary key, email varchar(64), ... )engine=innodb; 由于要使用邮箱登录,所以业务代码中一定会出现类似于这样的 阅读全文

posted @ 2022-03-05 23:13 Love&Share 阅读(456) 评论(0) 推荐(1) 编辑

MySQL为什么有时候会选错索引?
摘要:案例: CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `a` (`a`), KE 阅读全文

posted @ 2022-03-04 23:21 Love&Share 阅读(91) 评论(0) 推荐(0) 编辑

普通索引和唯一索引,应该怎么选择?
摘要:1)什么是唯一索引? 不允许具有索引值相同的行,比如身份证唯一的 案例:假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,那该如何建索引? select name from CUser where id_ca 阅读全文

posted @ 2022-03-03 21:56 Love&Share 阅读(525) 评论(0) 推荐(1) 编辑

怎么减少行锁对性能的影响?
摘要:1)MyISAM 被 InnoDB 替代的重要原因之一是什么? MyISAM 引擎就不支持行锁,只能使用表锁,同一张表上任何时刻只能有一个更新在执行,影响到业务并发度。 InnoDB 是支持行锁的。 2)两阶段锁协议是什么? 在 InnoDB 事务中,行锁是在需要的时候才加上的,但并不是不需要了就立 阅读全文

posted @ 2022-02-27 22:11 Love&Share 阅读(418) 评论(0) 推荐(0) 编辑

全局锁和表锁 :给表加个字段怎么有这么多阻碍?
摘要:1)数据库为什么要设计锁? 处理并发问题,因为数据库是共享资源 2)根据加锁的范围,mysql里面的锁有哪几种? 全局锁 表锁 行锁 3)全局锁 what? 对整个数据库实例加锁 why? 优点:防止在备份期间有业务修改数据库的数据,导致问题的出现。 how? 让整个库只读的命令:Flush tab 阅读全文

posted @ 2022-02-26 21:14 Love&Share 阅读(173) 评论(0) 推荐(0) 编辑

事务隔离级别测试
摘要:查看当前的mysql隔离级别 select @@tx_isolation 设置数据库的隔离级别为read uncommitted set session transaction isolation level read uncommitted 注意:隔离级别是和事务相关的,需要先启动事务,才有隔离级 阅读全文

posted @ 2021-07-27 13:17 Love&Share 阅读(60) 评论(0) 推荐(0) 编辑

statement和preparestatement的选择与不同
摘要:JDBC驱动的最佳化是基于使用的是什么功能. 选择PreparedStatement还是Statement取决于你要怎么使用它们。对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用PreparedStatement是最好的。 PreparedStatem 阅读全文

posted @ 2021-05-14 09:25 Love&Share 阅读(141) 评论(0) 推荐(0) 编辑

mysql备份
摘要:mysql备份有三种方式: 物理导出 :直接复制c盘下面的data文件里的数据 sqlyog可视化的导出,选中表/库 右键导出/备份 命令行来导出备份 -- mysqldump -h 主机-u用户名 -p 密码数据库﹑表名>物理磁盘位置/文件名 mysq1dump -h1oca7host -uroo 阅读全文

posted @ 2021-05-14 09:05 Love&Share 阅读(45) 评论(0) 推荐(0) 编辑

数据库用户管理
摘要:--创建用户CREATE USER用户名IDENTIFIED BY '密码' CREATE USER zhangsan IDENTIFIED BY '123456' --修改密码(修改当前用户密码) SET PASSWORD = PASSWORD( '123456') --修改密码(修改指定用户密码 阅读全文

posted @ 2021-05-14 08:48 Love&Share 阅读(51) 评论(0) 推荐(0) 编辑

索引介绍及索引的分类
摘要:在一个表中,主键索引只能有一个,唯一索引可以有多个 主键索引(PRIMARY KEY) :唯一的标识,主键不可重复 (id怎么能有两个1,或者两个2呢),只能有一个列作为主键 唯一索引(UNIQUE KEY):避免重复的列出现,唯一索引可以重复,多个列都可以标识为唯一索引 常规索引(默认的)(KEY 阅读全文

posted @ 2021-05-13 16:54 Love&Share 阅读(370) 评论(0) 推荐(0) 编辑

事务测试转账
摘要:事务思路图: 1 -- mysql 是默认开启事务自动提交的 2 SET autocommit=0 -- 关闭 3 SET autocommit=1 -- 开启(默认的) 4 5 -- 手动处理事务 6 START TRANSACTION -- 标记一个事务的开始,从这个之后的sql都在同一个事务内 阅读全文

posted @ 2021-05-13 11:35 Love&Share 阅读(59) 评论(0) 推荐(1) 编辑

事务的特性及名词解释
摘要:一 什么是事务? 记住两句话:要么都成功,要么都失败 事务用于保证数据的一致性,由一组相关的dml(增删改)语句组成。 1.SQL执行 A给B转账 A 1000 > 200 B 200 2.SQL执行 B收到A的钱 A 800 B 400 将一组SQL放到一个批次里面去执行 二 事务的原则:ACID 阅读全文

posted @ 2021-05-13 11:02 Love&Share 阅读(219) 评论(0) 推荐(0) 编辑

数据库级别的MD5加密
摘要:什么是MD5? MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致主要增强算法复杂度和不可逆性。MD5算法因其普遍、稳定、快速的特点。 阅读全文

posted @ 2021-05-12 22:00 Love&Share 阅读(108) 评论(0) 推荐(0) 编辑

MySql聚合函数及分组过滤
摘要:count(1) 和count(*)的区别: SELECT COUNT(`borndate`) FROM student; -- count字段,会忽略所有的null值 SELECT COUNT(*) FROM student; -- count(*),不会忽略null值,本质:计算行数,有多少行就 阅读全文

posted @ 2021-05-12 21:45 Love&Share 阅读(203) 评论(0) 推荐(0) 编辑

分页和排序
摘要:排序: 1 --排序:升序AsC ,降序DESC-- ORDER BY通过那个字段排序,怎么排--查询的结果根据成绩降序排序 2 3 4 SELECT s. `studentNo` , `studentName`, `subjectName` , `studentResu1t` 5 FROM stu 阅读全文

posted @ 2021-05-11 20:44 Love&Share 阅读(108) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示