mysql
文章平均质量分 79
黑色核桃
这个作者很懒,什么都没留下…
展开
-
LRU算法在redis和mysql中的不同应用
LRU算法用来做数据淘汰的算法,用来淘汰最近最少访问的数据;一般使用链表实现,当一个key被访问时,就将key放在链表头部,当需要淘汰数据时,就将链表末尾的数据淘汰。redis中的应用redis中淘汰数据有两个方式:定期删除:redis有后台线程,会定时扫描数据,从中选择应该淘汰的过期数据将其删除。假如每次删除都对所有的key进行一次最近访问时间排序的话,对性能消耗非常大,redis采用的是随机抽样的方式进行删除,例如LRU算法删除,则随机抽取20个key,从中找出最近未访问的key进行删除。这样随原创 2021-06-09 14:36:39 · 230 阅读 · 0 评论 -
Mysql 内存使用
Mysql的内存使用Mysql虽然将所有的数据持久化在磁盘上,但是不可能每次查询、更新都直接对磁盘操作,那样效率也太低了。Mysql在实际sql语句执行过程中会充分利用内存进行加速读、写、排序、连接等。buffer poolbuffer pool是Innodb引擎的数据缓冲区。它主要有两个功能,一个是加速读,一个是加速写。当Innodb从磁盘上读取数据之后,会将数据存放在buffer pool中存储,之后下次查找直接从buffer pool中读取。当写入数据时,如果数据在buffer pool中已经存原创 2021-03-23 20:20:23 · 315 阅读 · 0 评论 -
Mysql 索引
Mysql 索引索引存在的目的就是为了加速查询。索引的实现方式Innodb引擎中索引只有B+树这一种实现方式。为什么选择B+树而不是数组、二叉树、B树,主要是考虑磁盘IO。Mysql作为一个数据持久化的数据库,所有的数据都是存储在磁盘上的,磁盘的访问性能在计算机的硬件中算是比较慢的,尤其是对于机械硬盘来说,随机访问速度更是慢的离谱,相比较而言,在内存中进行处理速度就快的多。因此想要加速数据查询,首先要做的就是尽可能减少磁盘IO,减少单次查询需要查询的磁盘次数。对于有序数组来说,数据需要进行二分查找,原创 2021-03-23 15:31:19 · 72 阅读 · 0 评论 -
MySql 幻读思考
什么是幻读幻读是指在事务执行期间,两次相同条件的读取,后面一次读取的结果中出现了前一次读取的结果中不存在的数据。出现这个问题的原因是因为其他事务执行之后新增了符合条件的数据,或将原有数据修改为符合条件。幻读的影响幻读带来的后果主要有两个:1. 结果不符合预期幻读会导致事务执行出现意料之外的结果,例如事务1查询主键为a的记录,如果不存在,则插入。假如事务1查询主键为a的记录不存在时,事务2插入了主键为a的记录并提交,那么事务1执行插入语句时就会报错。2. 主从数据同步时可能出现数据不一致问题假原创 2021-03-22 21:10:08 · 554 阅读 · 0 评论 -
Mysql 如何执行sql语句
Mysql如何执行一条sql语句mysql服务端主要分为两部分:server和存储引擎,server负责进行权限校验、sql语句解析、优化以及访问存储引擎;存储引擎主要负责数据的存取。当客户端向mysql server发送一条sql语句时主要经历以下步骤:客户端段访问mysql sever端的连接器,通过输入用户名密码来建立连接。mysql连接建立过程很复杂,实际使用过程中最好避免频繁的建立、断开连接。mysql查询缓存中是否命中了传入的sql语句。如果命中则直接返回查询缓存中的结果。但是由于数据更原创 2021-03-22 17:07:05 · 886 阅读 · 0 评论