数据库
javashareauthor
分享让知识变得更加得有价值
展开
-
MySQL的INSERT ··· ON DUPLICATE KEY UPDATE使用的几种情况
在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的行数据与现有表中记录的唯一索引或者主键不重复,则执行新纪录插入操作。另外,ON DUPLICATE KEY UPDATE不能写where条件。示例:create table kid_score(...原创 2020-02-19 12:01:49 · 810 阅读 · 0 评论 -
redo log与binlog的区别
redo log 是 InnoDB 引擎特有的;binlog 是 MySQL 的 Server 层实现的,所有引擎 都可以使用。 redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;binlog 是逻辑日 志,记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字段加 1 ”。 redo log 是循环写的,空间固定会用完;binlog 是可以追加写入的。“追...原创 2020-02-06 18:42:32 · 409 阅读 · 0 评论 -
生动解释redo log
《孔乙己》这篇文章,酒店掌柜有一个粉板,专门用来记录客人的赊 账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多 了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本。 如果有人要赊账或者还账的话,掌柜一般有两种做法: 一种做法是直接把账本翻出来,把这次赊的账加上去或者扣除掉; 另一种做法是先在粉板上记下这次的账,等打烊以后再把账本翻出来核算。 ...原创 2020-02-06 18:24:21 · 165 阅读 · 0 评论 -
数据库的查询缓存
MySQL 拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。之前执行过的语句及其结果可能会以 key-value 对的形式,被直接缓存在内存中。key 是查询 的语句,value 是查询的结果。如果你的查询能够直接在这个缓存中找到 key,那么这个 value 就会被直接返回给客户端。 如果语句不在查询缓存中,就会继续后面的执行阶段。执行完成后,执行结果会被存入查 询缓存中。...原创 2020-02-06 18:03:47 · 1151 阅读 · 0 评论 -
数据库的长连接和短链接
数据库里面,连接可以分为长连接和短链接;长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。 短连接是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。 注意建立连接的过程通常是比较复杂的,所以建议在使用中要尽量减少建立连接的动作, 也就是尽量使用长连接。 但是全部使用长连接后,你可能会发现,有些时候 MySQL 占用内存涨...原创 2020-02-06 17:53:30 · 2498 阅读 · 0 评论 -
乐观锁和悲观锁
在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、hibernate、ta...转载 2018-04-26 22:57:40 · 75 阅读 · 0 评论