![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 74
codingjav
骑马Coding
展开
-
canal+Kafka实现mysql与redis数据同步
前言上篇文章简单介绍canal概念,本文结合常见的缓存业务去讲解canal使用。在实际开发过程中,通常都会把数据往redis缓存中保存一份,做下简单的查询优化。如果这时候数据库数据发生变更操作,就不得不在业务代码中写一段同步更新redis的代码,但是这种 数据同步的代码和业务代码糅合在一起 看起来不是很优雅,而且还会出现数据不一致问题。那能不能把这部分同步代码从中抽离出来,形成独立模块呢?答案是肯定的,下面通过canal结合Kafka来实现mysql与redis之间的数据同步。架构设计can原创 2022-01-02 20:06:08 · 1922 阅读 · 0 评论 -
canal入门
前言以前对canal仅仅是停留在书本的概念层面上,从没实际搭建操作过,这不趁着元旦假期,学习输出一波。在此也祝福大家新年快乐,希望2022年大家工作顺利,事业更进一步。在日常工作中,数据不仅仅是直接保存在数据库中,还会涉及到其他中间组件,比如需要将数据同步到ES中供检索使用,也会把最新数据同步刷新到Redis等缓存中,实现数据一致性。这时就可以用到阿里开源的框架Canal,他可以很方便地同步数据库的增量数据到其他的存储应用。1、什么是canal我们先来看下官网的介绍:...原创 2022-01-02 19:59:30 · 860 阅读 · 0 评论 -
Oracle用rowid删除同一张表的重复记录
经常有这样一个业务场景,我们在同一张表中有重复的记录,我们要删除重复的记录,这篇文章就是用来解决这个问题的,用的方法是我目前遇到的效率最高的方法(如果有更好的方法欢迎网友提供)。这个方法会用到了rowid,下面简单介绍一下rowid的定义1、ROWID定义ROWID:数据库中行的全局唯一地址对于数据中的每一行,rowid伪列返回行的地址。rowid值主要包含以下信息:对象的数据原创 2017-11-30 20:57:36 · 1118 阅读 · 1 评论 -
mac m1安装mysql
搜索mysqlbrew search mysql安装mysqlbrew install mysql安装指定版本brew install mysql@5.7卸载mysqlbrew uninstall mysql查看mysql的基本信息,比如说怎么启动服务之类的brew info mysql查看mysql的安装路径brew list mysql基础命令// 启动// 后台brew services start mysql// 前台mysql.server star原创 2021-07-31 17:28:59 · 239 阅读 · 0 评论 -
mysql数据库ACID实现原理
说到事物的四大特性原子性、一致性、隔离性、持久性,懂的人很多,但是稍微涉及细节,四大特性在数据库中的实现原理是怎么实现的?几乎很少有人能够答上来。所以这里着重讨论下mysql中的实现原理。问题一:Mysql怎么保证一致性的?OK,这个问题分为两个层面来说。从数据库层面,数据库通过原子性、隔离性、持久性来保证一致性。也就是说ACID四大特性之中,C(一致性)是目的,A(原子性)、I(隔离性)、D(持久性)是手段,是为了保证一致性,数据库提供的手段。数据库必须要实现AID三大特性,才有可能实现一致性原创 2021-08-10 21:10:24 · 252 阅读 · 0 评论 -
MySQL安全设置命令mysql_secure_installation
安装MySQL通过Homebrew安装,执行brew install mysql即可。安装完成后会显示Caveats警告,如下所示: We've installed your MySQL database without a root password. To secure it run: mysql_secure_installationMySQL is configured to only allow connections from localhost by defa.原创 2021-07-31 17:53:02 · 17040 阅读 · 0 评论 -
MySQL中保存emoji表情
如果想要在MySQL数据库中保存表情这种字符,若字符集编码utf8或者其他字符集,当执行插入数据库操作就会抛错Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1这是因为这些字符所占用的字节数大于3,而utf8最大支持为3个字节,所以插入过程无法有效完成,导致错误。那么如果使得这些特殊字符保存到MySQL中?...原创 2020-02-13 10:46:21 · 325 阅读 · 0 评论 -
数据库基础知识点
目录1、mysql两种存储引擎的区别与场景?2、mysql b+索引和hash索引的区别?2.1、为啥b+树适合作为索引的结构3、索引的分类4、事务四大特性(ACID)5、数据库隔离级别?每个级别会引发什么问题?6、mysql的锁算法7、MVCC机制1、mysql两种存储引擎的区别与场景?MyISAM不支持事务;支持表锁,每次操作都是对整表加锁;myisam 数据文件和索引文件分开保存;采用非聚集索引,索引文件数据域存储的是数据文件的指针地址;适用于OLAP;.原创 2021-08-09 01:12:51 · 73 阅读 · 0 评论 -
从ReadView深入理解MySql MVCC原理
MySql MVCC 机制在说MVCC机制前我们先了解ReadView。ReadView是什么呢?在我们平时执行一个事务的时候,就会生成一个ReadView,ReadView的组成结构大致如下参数说明:creator_trx_id:当前事务idm_ids:所有事务的事务idmin_trx_id:m_ids里最小的事务id值max_trx_id:最大事务id我们来具体分析一下ReadView的作用,以及是如何解决脏读幻读,不可重复读的问题的现在数据有一条数据,如下原始值,上一个已转载 2021-08-10 20:17:56 · 160 阅读 · 0 评论 -
mysql表名忽略大小写
查看大小写区分mysql> show variables like "%case%";+------------------------+-------+| Variable_name | Value |+------------------------+-------+| lower_case_file_system | OFF || lower_原创 2016-09-12 10:40:12 · 1660 阅读 · 0 评论 -
mysql之index
1.索引作用在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。例如,有3个未索引的表t1、t2、t3,分别只包含列c1、c2、c3,每个表分别含有1000行数据组成,指为1~1000的数值,查找对应值相等行的查询如下所示。 SELECT c1,c2,c3 F原创 2017-09-25 13:17:00 · 312 阅读 · 0 评论 -
安装完MySQL数据库,在服务列表里找不到MySQL的解决办法
安装MySQL数据库完成后,在控制面板的服务列表里找不到MySQL服务启动项解决方案:(参考以下命令)1、打开cmd,切换到mysql的bin目录下(dos命令切换目录||1、cd\ 返回到根目录,2、cd 文件名 进入到指定文件目录下)2、 D:\Program Files\MySQL5.1\bin>mysqld.exe -installService suc原创 2017-04-09 17:45:02 · 8669 阅读 · 1 评论 -
MySQL对于有大量重复数据表的处理方法
需要在MySQL的一张innodb引擎的表(tableA)上添加一个唯一索引(idx_col1_u)。但是对于每个key(col1)表中已经有大量重复数据。此时,做数据的手工清理,或者SQL处理是非常耗时的。MySQL有一个独有的 alter ignore add unique index的语法。ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl原创 2017-09-25 13:19:22 · 1231 阅读 · 0 评论 -
Where与Having的区别
地球人都知道,Where关键字的作用是过滤,选取符合条件的记录,而Having关键字的作用则是,为聚合结果指定条件。但是,在某些条件下,使用这两者可以得到一样的结果。比如以下的例子:1.SELECT BoxType,COUNT(1) FROM BoxType GROUP BY BoxTypeHAVING BoxType='小箱';2.SELECT BoxType,COU原创 2017-12-03 19:10:13 · 416 阅读 · 0 评论 -
MVCC实现原理
1、什么是MVCCmvcc多版本并发控制。mvcc在mysql innodb中主要是为了提高数据库并发性能,用更好的方式去处理读写冲突,做到即使有读写冲突时,也能做到不加索,非阻塞并发读。。2、实现原理:mvcc的实现是通过保存数据在某个时间点的快照来实现的。也就是说不管需要执行多长时间,每个事物看到的数据都是一致的。3、mvcc解决那些问题?事务并发可能会产生以下问题:脏读:读取其它事务未提交的数据。 不可重复读:一个事务在读取一条数据时,由于另一个事务修改了这条数据并且提交原创 2021-08-10 20:10:04 · 7501 阅读 · 0 评论 -
Hibernate自动创建表
Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步。一、通过Hibernate的ShemaExport来创建1)实体类package com.xiaomo.vo;public class User {private int id;// 用户idprivate String name;// 用户名称private int原创 2016-09-12 11:38:10 · 3152 阅读 · 0 评论 -
分布式锁实现方案
1、什么是锁在单进程环境中,存在多个线程可以同时改变某个变量,就需要对变量或代码块做同步,使其修改这种变量时能够线性执行,防止并发带来不可控的结果。而这种同步的本质就是通过锁实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么就需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余线程发现已经有标记后则等待标记的线程结束同步代码块取消后再尝试标记。这个标记可以理解为锁。不同地方实现锁不同,只要满足线程看到标记即可。...原创 2021-10-14 11:33:39 · 181 阅读 · 0 评论 -
mysql-锁
根据加锁的范围,MySQL里面的锁大致可以分为全局锁、表级锁和行锁三类。全局锁全局锁是对整个数据库实例加锁。MySQL提供了一个加全局读锁的方法,命令:Flush tables with read lock (FTWRL)当需要让整个库处于只读状态时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。全局锁的典型使用场景是,做全库逻辑备份。也就是把整库每个表都select出来存成文本。官方原创 2021-09-23 22:50:49 · 98 阅读 · 0 评论