
数据库
『梧桐雨』
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL优化
MySQL优化总结: 1.查询缓存: 相同的查询被执行了多次的时候,查询结果会被放到一个HASH映射缓存中,后续的相同(完全一样,包括空格大小写)的查询就不用操作表而直接访问缓存结果。查询缓存是第一步,在sql语法解析之前,因此可以大大升级性能。查询缓存默认是开启的。 如下两种情况会导致不走查询缓存: a. select语句中使用SQL_NO_CACHE强制不走缓存,如: select SQL_NO_CACHE * from table_name where xxxx = yyyy b. 查询中有不确定原创 2020-06-15 22:18:39 · 753 阅读 · 0 评论 -
MySQL的并发控制MVCC
看下如下2个demo,关闭了自动事务,select和update语句会自动给users表加上S锁(共享锁)和X锁(排它锁)。S锁和X锁是互斥的,按理说先执行的事务未commit或者rollback之前,另一个事务是无法对users表加互斥锁进行操作的,但是这里两个demo却可以正常执行。 demo1: transaction1: set session autocommit=off; update users set lastUpdate=now() where id =1;//加x原创 2020-06-14 15:52:30 · 364 阅读 · 0 评论 -
MySQL的事务和锁学习
一 数据库事务概念 1.数据库事务 数据库操作的最小单元,是一组不可分割的逻辑操作单元。要么一起成功持久化,要么失败回滚。 2.事务的ACID特性 原子性(Atomic) 最小单元,不可分割了。 一致性(Consistency) 事务操作的数据及状态是一致的,写入的结果必须要符合预期规则,与会因为系统意外等原因导致状态不一致。 隔离性(Isolation) 不同事务操作数据之间不可见。 持久性(Durability) 事务一旦提交,数据更改就会永久保存。 3 事务并发带来的问题 脏读 事务A读到了事务B未提原创 2020-06-13 22:56:22 · 286 阅读 · 0 评论 -
MySQL执行计划学习
1.explain 的作用 工作中需要要写出好的sql或者想要提升sql的查询性能,我们通常的做法是加索引。那么加了索引后,我们如何知道加的索引生效了呢?真正执行每条sql时走的是哪个索引呢?(表字段建了多个索引,单sql执行时只会走一个索引) 索引效率如何呢?这就需要我们查询sql的执行计划,通过执行执行分析性能。不同数据生产厂商提供了不同的执行执行查询语句,如mysql,postgresql的explain ,oracle的explain for。这里学习下mysql的执行计划。 2.explain查询原创 2020-06-13 16:32:58 · 433 阅读 · 0 评论 -
MySQL存储引擎
为了提高数据库查询性能,我们会给表字段加索引,索引又是又是由存储引擎实现的,所以学习下MySQL中的常用的存储引擎是很有必要的。MySQL中常用的存储引擎由MyISAM和InnoDB两种存储引擎。 1.MyISAM存储引擎 1.1 MySQL5.5之前默认的存储引擎。具有一下特点: a. b. c. 1.2 MySQL中B+Tree索引的体现形式如下图,索引和数据行数据分开存储在一个.MYI和一个.MYD的文中。无论是主键上建立的索引,还是主键外的辅助索引,索引过程均为下图:在.MYI文件中根据索引找到地原创 2020-06-09 15:20:48 · 164 阅读 · 0 评论 -
MySQL索引学习
1.索引是什么? **索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。**索引是由存储引擎实现的,而MySQL的存储引擎是表级的,同一个数据库的不同表可以使用不同的引擎。索引并非越多越好,正确的创建合适的索引是提升数据库查询性能的关键。 索引是表索引字段和记录行的物理地址构成。索引和表是分开存储的。索引不宜过多(一般一张表最好不要超过5个索引),一张两千万数据的普通表,几个索引的体积就可以1GB. 2.为什么要使用索引? 1.索引是极大的减少存储引擎需要扫描的数据量。 2.可以把随机IO变原创 2020-06-08 23:19:18 · 269 阅读 · 0 评论 -
Mysql连接时区报错解决方法
高版本的mysql连接时,可能会报带有乱报的时区错误,解决方法可以参考网上给出的在spring.datasource.url后加一串编码及时区指定条件试试,不过我的项目加了后仍然不行,所以我采用了修改数据库服务器的时间来解决。 方法一(临时,重启后失效): 在mysql的dos窗口或者mysql客户端输入如下命令即可。 set global time_zone = ‘+8:00’; #修改mys...原创 2019-08-10 16:49:14 · 704 阅读 · 0 评论