
MySQL
daixyhymn
任重道远 www.dxyhymn.com
展开
-
MySQL innodb 和MyISAM对比
select count(*) innodb会一行一行扫描,MyISAM 会直接返回,有条件是一样,都会行扫描。MyISAM 只支持表锁MyISAM 不支持事务 MyISAM 支持全文索引MyISAM 不支持外键MyISAM 可以用表锁实现事务(最好别)...原创 2019-12-18 18:29:05 · 88 阅读 · 0 评论 -
MySQL死锁
以下,均参考自58沈剑公众号地址:https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651961535&idx=1&sn=b62e9d71836ac5cf2d3cedf69e1ef395&chksm=bd2d0d638a5a84750adfc39d7e177a63330d6bde0f56600764b2d...原创 2019-12-18 17:38:23 · 133 阅读 · 0 评论 -
MySQL 锁和隔离级别关系总结
共享锁:读读可以并行排他锁:读写,读读都不能并行自增锁:表锁,主键是自增的话,会串行执行insert,后面的insert必须等待第一个事务完成插入意向锁:如果insert 不是同一行的话,不会互相影响记录锁(行锁):select会影响修改和删除本行,锁的是索引间隙锁:锁间隙,防止select时修改间隙里面的数据(在RR下,防止出现幻读;RC的话会自动消失)临隙锁,记录锁和间隙锁的结合,...原创 2019-12-18 10:29:49 · 204 阅读 · 0 评论 -
innodb 快照读,在RR和RC下有何差异?
RC 和 RR读提交下: 快照读总是可以读取到最新的数据解决了读脏数据,保证读取到的数据都是已经事务提交了的。但是会产生“读幻影行”,同一个事务里面,可能两次读取到的数据不一致。可重复读: 某个事务首次读取的时间为T,后续读取的数据不会读取在T之后写入的记录,以保证数据事务读取到的数据一致,解决了读脏数据和读幻影行。例子:表中有三条记录:1, shenjian2, zhangsa...转载 2019-12-17 17:40:35 · 232 阅读 · 0 评论 -
MySQL innodb并发高原因
普通锁:太暴力,不允许其他的并发任务操作共享锁(s锁):读取数据时加锁,读读可以并行,共享锁之间不互斥排它锁(x锁):修改数据时加锁,读写,读读,不可以并行,排它锁与其他任何锁互斥。普通锁:串行执行读写锁:读读并行数据多版本:读写并行(写数据时,clone一份数据,其他的读的线程读取旧数据)ACID原子性:Atomicity,事务执行要么成功,要么失败。一致性:Consis...转载 2019-12-17 17:08:19 · 235 阅读 · 0 评论 -
MySQL 组内排序,取分组后最新的 满足条件的第n条
MySQL默认开启了ONLY_FULL_GROUP_BY,也就是说SELECT中的列只能是GROUP BY中出现的列。这样的话导致无法对分组后的数据进行筛选,必须在group by 中添加 select 中药查看的数据,这样又会有问题,所有优点矛盾。so:问题:检索分组后时间最大 的数据,并且第一条数据要满足必要的条件先查出没个组内最大时间最大,生成临时表:(SELECT orderNo...原创 2019-11-23 14:51:55 · 680 阅读 · 0 评论 -
MySQL中int(M)和tinyint(M)
1、整数型的数值类型已经限制了取值范围,有符号整型和无符号整型都有,而M值并不代表可以存储的数值字符长度,它代表的是数据在显示时显示的最小长度;2、当存储的字符长度超过M值时,没有任何的影响,只要不超过数值类型限制的范围;3、当存储的字符长度小于M值时,只有在设置了zerofill用0来填充,才能够看到效果,换句话就是说,没有zerofill,M值就是无用的。总结:int(11),tinyi...原创 2019-11-18 16:25:08 · 192 阅读 · 0 评论 -
MySQL 索引总结篇
为什么要设计索引用于提升数据库的查找速度hash 比 tree 更快,索引结构为什么设计成树结构持续更新参考 :58沈建公众号(架构师之路)原创 2019-10-31 16:22:38 · 92 阅读 · 0 评论 -
Ubuntu18 安装MySQL 5.8踩坑记录
写在前面,据说MySQL 5.8 比5.7快两倍,试试水,但是稳定性可能差点吧。 参考:https://ywnz.com/linuxysjk/1645.html在执行 sudo apt update 可能签名失效,要更新下签名W: GPG 错误:http://repo.mysql.com/apt/ubuntu bionic InRelease: 下列签名无效: EXPKEYSIG 8...原创 2019-10-21 15:39:10 · 1251 阅读 · 0 评论 -
Ubuntu 测试卸载MySQL
本文教你如何快速的在Ubuntu18.04操作系统下彻底删除MySQL,以下针对的是5.7版本,其它的版本可以自行调整运行指令。注:采用sudo apt install mysql-server命令的方式默认安装的是MySQL5.7,MySQL5.7版本最高只适配到Ubuntu17.04,不支持Ubuntu18.04,MySQL8.0可适配到Ubuntu18.04故如果系统使用的Ubuntu18...转载 2019-10-21 14:09:41 · 275 阅读 · 0 评论 -
MySQL 更新密码
5.7之前mysql> UPDATE user SET password=PASSWORD(“new password”) WHERE user=‘username’;5.7mysql> UPDATE user SET authentication_string=PASSWORD(“new_password”) WHERE user=‘root’;//刷新系统权限表mysql...原创 2019-10-21 12:02:15 · 573 阅读 · 0 评论 -
Linux 下查看 MySQL得配置文件
which mysqld/usr/sbin/mysqld --verbose --help | grep -A 1 'Default options'#文件路径:MySQL会一次读取 路径下得my.cnf 参考:https://blog.youkuaiyun.com/moxiaomomo/article/details/9792801...原创 2019-10-21 10:28:35 · 318 阅读 · 0 评论 -
mysql 日志理解
redo log和undo logundo log不是redo log的逆向过程,其实它们都算是用来恢复的日志:1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。2.undo用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。bin...原创 2019-10-15 15:43:42 · 144 阅读 · 0 评论 -
MySQL 改密码
MySQL5.7update user set authentication_string=passworD("123456") where user='root';修改密码后root使用123456从任何主机连接到mysql服务器。GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPT...原创 2019-09-20 11:36:20 · 144 阅读 · 0 评论 -
MySQL 改变字段默认值
alter table `dl_student` alter healthCheck16 set default "default";原创 2019-09-10 18:01:22 · 524 阅读 · 0 评论