mysql
文章平均质量分 72
Mysql
ZNineSun
大道至简,返璞归真
展开
-
Canal安装教程
本文将详细介绍Canal在docker环境和windows环境下的安装教程由于同步是基于binlog实现的,所以要先在mysql中开启binlog。原创 2023-03-12 21:34:19 · 2614 阅读 · 0 评论 -
MySQL 百万级数据,如何做分页查询?
随着业务的增长,数据库的数据也呈指数级增长,拿订单表为例,之前的订单表每天只有几千个,一个月下来不超过十万。而现在每天的订单大概就是2w+,目前订单表的数据已经达到了700w。这带来了各种各样的问题,今天我先从一个小问题开始。之前所写的代码mysql的分页都是采用的limit方式进行,这种方式固然代码比较简单,但数据量大了之后真的是查的慢。所以此处涉及到mysql大数据量后的分页查询方法及其优化技巧。原创 2023-02-03 17:31:34 · 3103 阅读 · 0 评论 -
加密后的数据如何进行模糊查询
我们知道加密后的数据对模糊查询不是很友好,今天我们就具体探讨一下加密以后数据怎么继续模糊查查询的问题。我们需要加密存储,一般使用的都是不可逆的慢hash算法,慢hash算法可以避免暴力破解(典型的用时间换安全性),在检索时我们既不需要解密也不需要模糊查找,直接使用密文完全匹配但是手机号就不能这样做,因为手机号我们要查看原信息,并且对手机号还需要支持模糊查找,因此我们今天就针对可逆加解密的数据支持模糊查询来看看有哪些实现方式。原创 2022-10-31 16:17:37 · 4029 阅读 · 1 评论 -
为什么禁止在docker中跑Mysql
容器的定义:容器是为了解决“在切换运行环境时,如何保证软件能够正常运行”这一问题。目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化下面我们通过以下几个方面简单聊聊Docker 不适合跑 MySQL 的 N 个原因!原创 2022-09-28 23:06:06 · 1058 阅读 · 0 评论 -
SpringBoot集成ShardingJDBC实现MySQL读写分离
如果你已经完成了数据库的主从配置,那接下来我们就具体的开始看看读写分离是怎么实现的。访问:http://localhost:8080/getAllUser。同时在主库里创建数据库:qw(名字自己随便取),同时新增表:user。访问:http://localhost:8080/addUser。可以看出:插入数据执行的是主库,而查询执行的则是从库。原创 2022-09-26 01:33:03 · 414 阅读 · 0 评论 -
别再用 offset 和 limit 分页了,性能太差!
随着业务的扩增,用户使用也在呈井喷式增长,不需要担心数据库性能优化问题的日子已经一去不复返了。当然,很多人都是使用的如:PageHelper、MP等插件,他们也是将分页语句替我们加进去罢了,其本质还是limit分页。对于简单的小型应用程序和数据量不是很大的场景,这种方式还是能够“应付”的。如果你想从头开始构建一个可靠且高效的系统,在一开始就要把它做好。今天我们将探讨已经被广泛使用的分页方式存在的问题,以及如何实现高性能分页。...原创 2022-08-09 20:54:54 · 1835 阅读 · 0 评论 -
mysql常用指令
本文会逐渐把所有常用的sql语句都一一罗列出来,适用于大部分的面试和笔试,自己在项目中实际操作也可以,同时本文会持续更新,敬请关注。2.使所有字母小写3.连接字符串(字符串拼接)4.裁剪字符串5.获取字符串长度length():单位是字节,utf8编码下,一个汉字三个字节,一个数字或字母一个字节。gbk编码下,一个汉字两个字节,一个数字或字母一个字节。char_length():单位为字符,不管汉字还是数字或者是字母都算是一个字符。6.group_concat()函数在有grou原创 2022-06-21 23:22:52 · 349 阅读 · 0 评论 -
千万级并发架构下,如何进行关系型数据库的分库分表
最近项目上线后由于用户量的剧增,导致数据库的数据量剧增,随之而来的就是海量数据存储的问题,针对最近解决数据的优化过程,谈谈sql语句的优化以及数据库分库分表的方案。建议大家先阅读一下数据库的优化方案《数据库大数据量的优化方案》,里面从1.优化现有数据库:数据库设计之初的考虑sql编写的注意分区、分库、分表、分库2.升级数据库类型3.更换nosql或habas以上三个方面去提供方案和优化的办法和思路本文主要讲一下具体如何去分库分表的方案在研究如何分库分表之前我们先回答几个常见的原创 2022-05-18 16:26:42 · 2182 阅读 · 0 评论 -
解决生产异常 Cause com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException Lock wait timeout exceed
1.情景复现早上起来发现自己的错误日志提醒疯狂提示,错误如下:; Lock wait timeout exceeded; try restarting transaction; nested exception is com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction2.解决过程我们使用Navicat或者直接用原创 2022-05-14 12:30:10 · 2845 阅读 · 0 评论 -
浅谈悲观锁、乐观锁
文章目录1.为什么会产生悲观锁、乐观锁?2.脏读、幻读、不可重复读2.1 脏读2.2 幻读2.3 不可重复读2.4 数据库隔离级别读未提交(Read Uncommited)读已提交(Read Committed)可重复读(Repeatable Read)可串行化(Serializable)3.悲观锁(Pessimistic Lock)3.1 悲观锁的实现4.乐观锁(Optimistic Locking)4.1 乐观锁的实现5.具体实现5.1 悲观锁的实现5.2 乐观锁的实现6.理解 CAS 底层7.CAS原创 2022-03-17 22:09:19 · 702 阅读 · 0 评论 -
数据库大数据量的优化方案
在系统开发的初期以及使用的初期,一般不会太过于在意数据库的设计以及sql语句的优化,这就会导致系统有可能在日积月累的海量数据下越来越慢直至崩溃,所以以后在系统 数据库设计之初完备的数据库模型的设计是必须的。优化数据库方案对于数据库的的优化此处给出三种优化方案:1.优化现有mysql数据库优点:不影响现有业务,源程序不需要修改代码,成本最低缺点:有优化瓶颈,数据量过亿就无法继续支撑相应的业务2.升级数据库类型,换一种100%兼容mysql的数据库优点:不影响现有业务,源程序不需要修改代码,你几原创 2022-03-04 21:38:15 · 16247 阅读 · 0 评论 -
select......for update会锁表还是锁行
select查询语句是不会加锁的,但是 select …for update 除了有查询的作用外,还会加锁呢,而且它是悲观锁。那么它加的是行锁还是表锁,这就要看是不是用了索引/主键。没用索引/主键的话就是表锁,否则就是是行锁。下面我们进行一个验证建表CREATE TABLE `user` ( `id` INT (11) NOT NULL AUTO_INCREMENT, `name` VARCHAR (255) DEFAULT NULL, `age` INT (11) DEFAULT NUL原创 2022-03-01 11:26:14 · 3363 阅读 · 0 评论 -
mysql导出服务器内所有的数据库
本文目前仅介绍导出所有数据库以及导入所有数据库1.导出所有数据库mysqldump -uroot -p --all-databases > /home/all.sql2.将上一步导出的all.sql文件导入到其他 mysql服务器2.1 登录到mysql服务器mysql -u 用户名 -p -h 远程主机 -P数据库端口2.2 导入source /home/all.sql;注意我是将第一步导出的all.sql文件放在了我mysql服务器的home目录了不要忘了后面的逗号等待原创 2021-12-16 14:45:35 · 1867 阅读 · 0 评论 -
mysql设置主从数据库的同步
1.业务场景场景1:实现服务器负载均衡若我们所有的业务代码存于一个服务器上,而这个服务器有的时候回宕机,导致业务停顿,造成影响。这个时候 就需要做高可用,在数据库的处理上如果两个mysql实现高可用,避免单点问题。场景2:读写分离;master写,其他slave读,这种架构最大问题I/O压力集中在Master上;场景3:通过复制实现数据的异地备份可以定期的将数据从主服务器上复制到从服务器上,这无疑是先了数据的异地备份。在传统的备份体制下,是将数据备份在本地。此时备份 作业与数据库服务器运行在同一原创 2021-12-16 11:17:30 · 2414 阅读 · 3 评论 -
解决mysql重启之后,主从出现报错:ERROR 1872 (HY000) Slave failed to initialize relay log info structure from the r
1.问题复现2.原因启动slave时,使用repository中信息初始化relay log结构失败了,如果使用的是冷备份文件恢复的实例,在mysql库中的slave_relay_log_info表中依然保留之前relay_log的信息,所以导致启动slave报错3.解决办法reset slave;start slave;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bzex88Uj-1639622334419)(2.png)]...原创 2021-12-16 10:44:19 · 1154 阅读 · 0 评论 -
解决mysql提示too manay connections
当我们使用数据库时经常会出现连接数太多导致数据库宕机的问题,这是由于默认的连接数太小导致连接的线程超过系统的配置从而出现这种错误。解决方案如下:登录mysql终端,查看当前的最大连接数首先通过mysql -u root -p 登录终端,注意root是你数据库的用户名,自己按照自己的用户名修改即可通过show variables like "max_connections";查看当前的连接数接下来通过指令set GLOBAL max_connections=1000;修改最大连接原创 2021-10-17 15:21:03 · 1039 阅读 · 0 评论 -
解决mysql8.0无法使用group by的问题
mysql 新版本出现group by 语句不兼容问题,当我们使用时会出现以下错误提示解决办法如下:找到my.cnf,添加一下配置:sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION对于docker中配置的mysql镜像,通过docker exec -it 容器id /bin/bash进入之后,在/etc/mysql/目录下如果镜像中未安装vim编辑器可以通过将配置文件覆盖的方式docker cp mysql-wzs:/etc/mysq原创 2021-08-09 14:31:36 · 4146 阅读 · 0 评论 -
mysql设置定时备份
不管是什么类型的数据库,我们都需要定时的备份,以便在出问题时可以及时恢复,减少损失。sqlserver的备份很简单,sqlserver自带,这里主要给大家分享下mysql的自动备份如何设置。1.工具:navicat2.数据库:mysql1.设置备份的存储地址在设置连接信息时点击高级-设置保存路径2.点击计划->新建批处理作业3.选择我们要备份的数据库,双击添加到任务栏->保存(输入任务名)注意:本文章新建的任务名为:项目备份4.回到计划页面就可以看到刚刚我们建好原创 2021-06-15 10:58:03 · 1955 阅读 · 2 评论 -
docker部署mysql
1.拉取mysql镜像2.验证是否拉取成功3.运行mysql镜像4.进入容器,修改root用户允许远程访问4.1 查看容器id4.2 进入容器4.3 进入mysql4.4 修改远程权限:4.5 通过Navicat等远程访问工具进行访问1.拉取mysql镜像sudo docker pull mysql:8.02.验证是否拉取成功sudo docker images3.运行mysql镜像docker run -d -p 3306:3306 --name mymysq..原创 2020-10-21 15:46:25 · 235 阅读 · 0 评论 -
mybatis以及mysql常见问题
1.设置外键失败问题1.问题描述alter table stu add foreign key(cno) references user(id);Failed to add the foreign key constraint. Missing index for constraint ‘stu_ibfk_1’ in the referenced table ‘user’2.解决方案:...原创 2020-02-09 00:28:20 · 934 阅读 · 0 评论