Mysql8.0为什么取消了缓存查询的功能

科技资讯 投稿 6800 0 评论

Mysql8.0为什么取消了缓存查询的功能

MySQL的缓存机制

【MySQL缓存机制】简单的说就是缓存sql文本及查询结果,如果运行完全相同的SQL,服务器直接从缓存中取到结果,而不需要再去解析和执行SQL。

缓存是对系统性能优化的重要手段。

1.MySQL缓存是基于Hashmap的:查询语句的字符大小写、空格或者注释的不同,缓存查询都会认为是不同的查询(因为他们的hash值会不同)

高并发,有成千上万条查询语句时,hash计算和查找所带来的开销就必须重视了。

如果缓存内容很多,则消耗也会很大,可能使系统僵死,因为这个操作是靠全局锁操作来保护的。

总结:

解决思路是:把一些容易变动的数据还是存在磁盘上,而不是在缓存中,这样就是省去了缓存改来改去的问题。

解决方案:运用了新的数据库Redis 

Redis数据都是缓存在计算机内存中。

NoSQL,泛指非关系型的数据库区别于关系数据库,它们不保证关系数据的ACID特性。

这里我们又要引入事务的概念,如下:

事务定义

事务是一系列操作组成的工作单元,该工作单元内的操作是不可分割的,即要么所有操作都做,要么所有操作都不做,这就是事务。

       理解一:

       事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。

       理解二:

       事务可以看做是一个大的操作,它由一系列操作组成,这些操作要么全部成功,要么全部失败。

 

ACID---事务的四大特性 ---原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

举一个SQL事务的例子:
begin transaction; update account set money = money-100 where name = '张三'; update account set money = money+100 where name = '李四'; commit transaction;
这里面的两个操作必须都成功或者都失败。

 

事务必须使数据库从一个一致性状态变换到另外一个一致性状态,能理解?????

个人认为就是执行这操作能够达到你的目的,然后不出错,在编写中体现在语法和实现是否可行,在功能上就是可以保证最后的结果和你的想法是一致的。

I:隔离性体现在:多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

D:持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

 

编程笔记 » Mysql8.0为什么取消了缓存查询的功能

赞同 (31) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽