mysql学习
文章平均质量分 85
cyb_17302190874
这个作者很懒,什么都没留下…
展开
-
MySQL使用之for update
MySQL for update转载 2022-11-23 14:26:47 · 1091 阅读 · 0 评论 -
MySQL学习之---联合索引
原创 2020-10-12 11:51:18 · 70 阅读 · 0 评论 -
MySQL学习之--普通索引和唯一索引的区别【转载】
1、概念不同的业务场景下,应该选择普通索引,还是唯一索引?假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。如果市民系统需要按照身份证号查姓名,就会执行类似这样的SQL语句:select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';所以,你一定会考虑在id_card字段上建索引。由于身份证号字段比较大,我不建议你把身份证号当做主键,那么现在你有两个选择,...转载 2020-09-01 18:39:09 · 109 阅读 · 0 评论 -
MySQL学习之---实际情况下用不到索引的场景【原创】
1.索引无法存储null值 a.单列索引无法储null值,复合索引无法储全为null的值。 b.查询时,采用is null条件时,不能利用到索引,只能全表扫描。 为什么索引列无法存储Null值? a.索引是有序的。NULL值进入索引时,无法确定其应该放在哪里。(将索引列值进行建树,其中必然涉及到诸多的比较操作,null值是不确定值无法 比较,无法确定null出现在索引树的叶子节点位置。) b.如果需要把空值存入索引,方法有二:其一,把NULL值转为一个特定的值,..原创 2020-06-15 16:48:51 · 176 阅读 · 0 评论 -
mysql学习之---sql执行过程【转载】
作为一个程序员,几乎所有人都使用过 SQL 语言,无论是在命令行执行、程序调用,还是在 SQL 工具里,你都做过这样的事:写一个规范的 SQL 语句,然后等待数据库返回的结果,然后再基于结果做各种逻辑处理。但是,你知道这条 SQL 语句是咋执行的吗?我打赌你并不是很清楚,读完全文,你会有完全不同的感受。我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表转载 2020-06-10 11:42:32 · 100 阅读 · 0 评论 -
mysql学习之MySQL的Binlog与Redolog【转载】
MySQL逻辑架构大致可以分为两层:服务层:MySQL的核心服务功能,包括查询语句解析,词法语法分析,优化,缓存以及内置函数(日期,时间,数学,加密等),跨存储引擎的功能:存储过程,触发器,视图等。 存储引擎:负责MySQL中数据的存储和提取。我们知道在MySQL中,server层的日志,成为binlog(归档日志),主要用来做主从复置和恢复时使用的。redo log是InnoDB引擎的日志,来实现crash-safe能力。为什么会有两份日志呢?因为MySQL早期版本中没有InnoDB引擎,M转载 2020-05-19 18:19:49 · 105 阅读 · 0 评论 -
Mysql 学习杂项 之 XA事务【转载】
XA–eXtended Architecture 在事务中意为分布式事务XA由协调者(coordinator,一般为transaction manager)和参与者(participants,一般在各个资源上有各自的resource manager)共同完成。在MySQL中,XA事务有两种。内部XA事务MySQL本身的插件式架构导致在其内部需要使用XA事务,此时MySQL即是协调者,也是参与者。例如,不同的存储引擎之间是完全独立的,因此当一个事务涉及两个不同的存储引擎时,就必须使用内部XA事务。..转载 2020-05-19 17:52:54 · 166 阅读 · 0 评论 -
MySQL 学习之 innodb_locks_unsafe_for_binlog 参数设置对是否幻读影响
mysql数据库中默认的隔离级别为repeat-read.innodb默认使用了next-key lock算法,这种算法结合了index-row锁和gap锁。正因为这样的锁算法,innodb在可重复读这样的默认隔离级别上,可以避免幻象的产生。innodb_locks_unsafe_for_binlog最主要的作用就是控制innodb是否对gap加锁。注意该参数如果是enable的,则是unsafe的,此时gap不会加锁;反之,如果disable掉该参数,则gap会加锁。当然对于一些和数据完整性...原创 2020-05-18 11:46:07 · 550 阅读 · 0 评论 -
为什么int类型字段在mysql中默认int(11) 无符号默认int(10)?
int类型在数据库中占4个字节(byte),即32位int有符号类型 取值在 - 2147483648 ~ 2147483647之间int无符号类型 取值在 0 ~ 4294967295之间有符号数最小值:- 2 1 4 7 4 8 3 6 4 81 2 3 4 5 6 7 8 9 10 11 --共11位无符号数最大值:4 2 9 4 9 6 7 2 9 51 2 3 4 5 6 7 8 9 10 --共10位所以mysql默认显示的int(...转载 2020-05-15 17:22:03 · 771 阅读 · 0 评论 -
MYSQL 中 怎么判断某一列的数值 是 NULL【转载】
相信很多用了MySQL很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问:我字段类型是not null,为什么我可以插入空值 为毛not null的效率比null高 判断字段不为空的时候,到底要select * from table where column <> ''还是要用select * from table wherecolumn is not null呢。带着上面几个疑问,我们来深入研究一下null 和 not null到底有什么不一样。首先,我们要搞...转载 2020-05-15 17:00:33 · 1256 阅读 · 0 评论 -
mysql 是如何保证在高并发的情况下autoincrement关键字修饰的列不会出现重复【转载】
转载自https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c42cf94e51d45524861122d#heading-8mysql实现这个机制的背后,主要有两种方式采用AUTO-INC锁,也就是在执行插入语句时,就在表级别上加一个AUTO-INC锁。然后,为每条待插入记录的AUTO_INCREMENT修饰的列分配递增的值。在该语句执行完成之后,再把AUTO-INC锁释放掉。需要注意的是,在释放锁的时候,不同于一般情况下的读锁和写锁...转载 2020-05-15 16:28:32 · 275 阅读 · 0 评论 -
MySQL 8.0 新特性之原子 DDL【转载】
文章目录 支持的 DDL 语句 原子 DDL 的特性 DDL 语句行为变更 存储引擎支持 查看 DDL 日志 原文地址:MySQL 8.0 Reference Manual我在慕课网发布的免费视频讲解MySQL 8.0 版本新特性。MySQL 8.0 开始支持原子性的数据定义语言(DDL),也称为原子 DDL。一个原子 DDL 语句将相关的数据字典更新、存储引擎操作以及写入二进制日志组合成单一的原子事务。当事务正在处理时出现服务器故障,该事务可能被提交,相应的变更会..转载 2020-05-15 15:43:49 · 119 阅读 · 0 评论 -
mysql参数之innodb_buffer_pool_size大小设置【转载】
用于缓存索引和数据的内存大小,这个当然是越多越好, 数据读写在内存中非常快, 减少了对磁盘的读写。 当数据提交或满足检查点条件后才一次性将内存数据刷新到磁盘中。然而内存还有操作系统或数据库其他进程使用, 根据经验,推荐设置innodb-buffer-pool-size为服务器总可用内存的75%。 若设置不当, 内存使用可能浪费或者使用过多。 对于繁忙的服务器, buffer pool 将划分为多个实例以提高系统并发性, 减少线程间读写缓存的争用。buffer pool 的大小首先受 innodb_buffe转载 2020-05-15 15:04:26 · 1180 阅读 · 0 评论 -
mysql中timestamp,datetime,int类型的区别与优劣【转载】
int1. 占用4个字节2. 建立索引之后,查询速度快3. 条件范围搜索可以使用使用between4. 不能使用mysql提供的时间函数结论:适合需要进行大量时间范围查询的数据表datetime1. 占用8个字节2. 允许为空值,可以自定义值,系统不会自动修改其值。3. 实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)4. 与时区无关(It转载 2020-05-14 15:52:28 · 134 阅读 · 0 评论 -
MySQL Hash索引和BTree索引【转载】
索引是帮助mysql获取数据的数据结构。最常见的索引是Btree索引和Hash索引。不同的引擎对于索引有不同的支持:Innodb和MyISAM默认的索引是Btree索引;而Mermory默认的索引是Hash索引。Hash索引所谓Hash索引,当我们要给某张表某列增加索引时,将这张表的这一列进行哈希算法计算,得到哈希值,排序在哈希数组上。所以Hash索引可以一次定位,其效率很高,而Btree索引需要经过多次的磁盘IO,但是innodb和myisam之所以没有采用它,是因为它存在着好多缺点:1转载 2020-05-11 15:11:56 · 179 阅读 · 0 评论 -
MySQL 性别为什么不适合建立索引-值重复率高的字段不适合建索引【转载】
理论文章会告诉你值重复率高的字段不适合建索引。不要说性别字段只有两个值,网友亲测,一个字段使用拼音首字母做值,共有26种可能,加上索引后,百万加的数据量,使用索引的速度比不使用索引要慢!一个表可能会涉及两个数据结构(文件),一个是表本身,存放表中的数据,另一个是索引。索引是什么?它就是把一个或几个字段(组合索引)按规律排列起来,再附上该字段所在行数据的物理地址(位于表中)。比如我们有个字段是年龄,如果要选取某个年龄段的所有行,那么一般情况下可能需要进行一次全表扫描。但如果以这个年龄段建个索引,那么索引中转载 2020-05-11 15:11:06 · 2319 阅读 · 1 评论 -
MySQL int 类型 int(10) 与 int(11)
为什么int型最大的数是214748364732位的电脑中,用二进制表示,最大的就是32个1,用十进制表示为2^32-1,大概40多亿(4294967295)对于有符号的,第一位用作表示正负(0,1),最大的就是31个1,用十进制表示为2^31-1,大概20多个亿(2147483647)其实当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存...原创 2020-04-29 14:03:59 · 317 阅读 · 0 评论 -
MYSQL乐观锁、悲观锁实现方式【转载】
各锁的概念:悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作悲观锁,从字面理解就是很悲观,每次去拿数据的时候都认为别人会修改,所以在每次拿的时候对数据上锁,这样就保证了数据的准确性。比如mysql中的表锁,行锁。表锁:当你对一张表进行修改时,会锁死整张表,其他的请求需要在修改完成释放锁才能继续。在高并发的情景下不适用。行锁:当你对一张表的某一行数据修改时,会锁死这一行...转载 2020-04-29 11:51:53 · 437 阅读 · 0 评论