Mysql数据库
mischen520
JAVA高级架构师
展开
-
java插入百万级别的数据解决方案
【代码】java插入百万级别的数据解决方案。原创 2023-11-15 13:00:00 · 451 阅读 · 0 评论 -
java利用多线程批量插入数据
【代码】java利用多线程批量插入数据。原创 2023-11-15 12:45:00 · 982 阅读 · 0 评论 -
java实现批量插入数据代码示例
在实际开发中,经常需要批量插入数据,常见的是使用mybatis foreach 插入的方式,1.常见的mybatis foreach。2.类似的mapper方法。3.业务层代码,数据组装。原创 2023-11-15 08:17:35 · 737 阅读 · 0 评论 -
什么是数据持久层,使用数据持久层能够为项目开发带来哪些好处?
2、业务逻辑代码可读性强,在代码中不会有大量的 SQL 语言,提高程序的可读性。数据持久层是一组软件服务,将应用程序与该程序所使用的数据源分离,为整个项目提。1、程序代码重用性强,即使更换数据库,只需要更改配置文件,不必重写程序代码。3、持久化技术可以自动优化,以减少对数据库的访问量,提高程序运行效率。5、通过对象/关系映射向业务逻辑提供面向对象的数据访问。4、简化开发工作,让开发人员更关注于业务逻辑的开发。供一个统一、安全、并发的数据持久机制。原创 2023-11-12 18:41:01 · 389 阅读 · 0 评论 -
Spring 事务失效的场景
4.如果在当前类中进行内部调用方法,比如在A类中有a方法和b方法,a方法没有加@Transaction,b方法加了@Transaction,在方法a中调用方法b,方法b中的事务也不会生效。这是因为spring在扫描bean的时候会自动为标注了@Transaction注解类生成一个代理类,在有注解方法被调用时,实际上是代理类调用的,代理类在调用之前会开启事务,执行事务操作。但是同类中的方法相互调用,相当于this.b(),此时的b方法并非代理类调用,而是直接通过原有的bean直接调用,所以注解不起作用。原创 2023-11-10 17:45:00 · 188 阅读 · 0 评论 -
MySQL中的datetime和timestamp有什么区别
与时区关系. datetime是存储服务器当前的时区. 而timestamp类型,是将服务器当前时间转换为UTC(世界时间)来存储.即datetime与时区无关,存什么,返回什么. 而timestamp存储的时间,返回的时间会随着数据库的时区不同而发生改变.存储范围不同. datetime的范围是1000-01-01到9999-12-31. 而timestamp是从1970-01-01到2038-01-19, 即后者的时间范围很小.关于datetime和timestamp的选择使用.原创 2023-11-07 20:54:07 · 422 阅读 · 0 评论 -
Mysql有多少种常见的日志,分别解释日志的作用
作用:确保事务的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行redo log执行重做,到达事务一致性。作用:用于数据库主从同步,将主库发送来的binlog先保存在本地,然后从库进行回放。作用:保证数据的原子性,记录事务发生之前的数据的一个版本,用于回滚。作用:记录执行时间过长的sql,时间阈值可以配置,只记录执行成功。作用:记录数据库操作明细,默认关闭,开启会降低数据库性能。general log 普通日志。relay log 中继日志。errorlog 错误日志。binlog 二进制日志。原创 2023-11-07 19:45:32 · 113 阅读 · 0 评论 -
mysql高可用集群架构
原创 2023-05-28 11:24:48 · 114 阅读 · 0 评论 -
mysql详细优化建议(谈谈你的SQL优化经验)
并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。.在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。如果主表很小,子表很大,并且有索引,是可以使用子查询的,如果主表很大,那就尽量避免子查询,而用。原创 2023-05-28 11:05:49 · 363 阅读 · 0 评论 -
谈谈你的SQL优化经验(面试题)?
计算的字段,就表示在没计算之前,这个字段的值是不确定的,根据上篇写的工作。滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定。况下,如果要过滤的条件没有涉及到要计算字段,那它们的结果是一样的,只是。才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的,的,所以在这种情况下,两者的结果会不同。这是一条简单易记的规则,但是实际的执行效果还须检验,在。中所有的列必须包含在相同的索引中并保持在索引中的排列顺序。这也是一条简单而重要的规则,当仅引用索引的第二个列时,原创 2023-05-28 10:51:17 · 616 阅读 · 0 评论 -
mysql详细安装-一个shell脚本命令即可搞定
二个是wget用的是网络源,要求主机在因特网上。打通linux服务器的网络配置环境。一个yum 源配置。如果linux上面没有,需要先配置上。三个是设置防火墙端口3306。原创 2023-05-28 09:04:42 · 388 阅读 · 0 评论 -
什么是SQL注入攻击?列举抵御SQL注入攻击的方式?
SQL注入攻击,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。抵御sql注入攻击:1.使用PreparedStatement2.使用存储过程3.验证输入/过滤输入4.专业的安全产品...原创 2022-05-29 09:51:18 · 390 阅读 · 0 评论 -
集群主从复制技术详解
主从复制可以采用同步、异步、半同步复制。(1)同步复制:主数据库需要等待所有备数据库均操作成功才可以响应用户,影响用户体验。这种方式保证了系统的一致性,但牺牲了数据的可用性。(2)异步复制:当用户请求更新数据时,主数据库处理完请求后可直接给用户响应,而不必等待备数据库完成同步,备数据库会异步进行数据的同步,用户的更新操作不会因为备数据库未完成数据同步而导致阻塞。这种方式保证了系统的可用性,但牺牲了数据的一致性。(3)半同步复制:用户发出写请求后,主数据库会执行写操作,并给备数据库发送同步请求,但主数据原创 2022-04-01 20:42:19 · 2887 阅读 · 0 评论 -
My SQL主从复制过程
当在从库上启动复制时,首先创建I/O线程连接主库,主库随后创建Binlog Dump线程读取数据库事件并发送给I/O线程,I/O线程获取到事件数据库后更新到从库的中继日志Relay Log中去,之后从库上的SQL线程读取中继日志Relay Log中更新的数据库事件并应用。...原创 2022-04-01 08:42:33 · 1039 阅读 · 0 评论 -
索引调整考虑的原则
(1)如果更新操作成为系统瓶颈(因为每次更新操作会重建表的索引),则需要考虑删除某些索引。(2)应该针对不同应用情况选择适当的索引类型。例如,如果经常使用范围查询,则B树索引比散列索引更加高效。(3)将有利于大多数据查询和更新的索引设为聚类(Cluster)索引。同时需要对建立的索引进行实际的测试,因为索引的使用是由数据库管理系统(数据库优化器)决定的。如果建立索引不当,数据库管理系统将不利用已经建立的索引,而采取全表扫描。...原创 2022-03-30 08:35:50 · 874 阅读 · 0 评论 -
docker容器中配置mysql集群详细操作步骤
1.下载mysql镜像这里我们拉取官方的最新版本的镜像:docker pull mysql:latest这一步也可以省略,当没有版本的时候,会自动去远程仓库里面拉取2.创建master实例并启动docker run -p 3307:3306 --name mysql-master --privileged=true -v /mydata/mysql/master/log:/var/log/mysql -v /mydata/mysql/master/data:/var/lib/mysql -v原创 2022-01-09 10:43:45 · 1136 阅读 · 1 评论 -
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated解决
今天docker容器中搭建mysql主从同步的时候,发现了如下报错:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated问题背景:使用的mysql数据库版本为:5.7在从库中执行如下命令:start slave然后就报如上错误[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY原创 2022-01-09 09:56:01 · 19580 阅读 · 2 评论 -
chown: changing ownership of ‘/var/lib/mysql/‘: Permission denied
今天在搭建mysql集群的时候发现一个问题,我创建的docker master实例为下面的语句:docker run -p 3307:3306 --name mysql-master -v /mydata/mysql/master/log:/var/log/mysql -v /mydata/mysql/master/data:/var/lib/mysql -v /mydata/mysql/master/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d原创 2022-01-09 08:19:06 · 4489 阅读 · 3 评论 -
怎么看mysql的执行计划,以及各个参数的详细解释
执行计划就是sql的执行查询的顺序,以及如何使用索引查询,返回的结果集的行数EXPLAIN SELECT * from A where X=? and Y=?1。id :是一个有顺序的编号,是查询的顺序号,有几个 select 就显示几行。id的顺序是按 select 出现的顺序增长的。id列的值越大执行优先级越高越先执行,id列的值相同则从上往下执行,id列的值为NULL最后执行。2。selectType 表示查询中每个select子句的类型SIMPLE: 表示此查询不包含 UNION 查询或原创 2021-10-17 08:28:37 · 1422 阅读 · 0 评论 -
索引设计的原则?
查询更快、占用空间更小适合索引的列是出现在where子句中的列,或者连接子句中指定的列基数较小的表,索引效果较差,没有必要在此列建立索引使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间,如果搜索词超过索引前缀长度,则使用索引排除不匹配的行,然后检查其余行是否可能匹配。不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。定义有外键的数据列一定要原创 2021-10-17 08:22:40 · 344 阅读 · 0 评论 -
MySQL事务隔离级别
事务隔离级别 脏读 不可重复读 幻读读未提交(read-uncommitted) 是 是 是不可重复读(read-committed) 否 是 是可重复读(repeatable-read) 否 否 是串行化(serializable) 否 否 否mysql默认的事务处理级别是’REPEATABLE-READ’,也就是可重复读oracle数据库支持READ COMMITTED 和 SERIALIZABLE这两种事务隔离级别。默认系原创 2021-09-10 00:03:41 · 67 阅读 · 0 评论 -
事务的并发问题
1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重原创 2021-09-10 00:01:14 · 123 阅读 · 0 评论 -
b-tree和b+tree的区别
B-树的关键字、索引和记录是放在一起的, B+树的非叶子节点中只有关键字和指向下一个节点的索引,记录只放在叶子节点中。在B-树中,越靠近根节点的记录查找时间越快,只要找到关键字即可确定记录的存在;而B+树中每个记录的查找时间基本是一样的,都需要从根节点走到叶子节点,而且在叶子节点中还要再比较关键字。...原创 2021-09-09 23:52:06 · 292 阅读 · 0 评论 -
mysql的索引优化
数据结构:B+Tree一般来说能够达到range就可以算是优化了 idx name_deptId口诀(两个法则加6种索引失效的情况)全值匹配我最爱,最左前缀要遵守;带头大哥不能死,中间兄弟不能断;索引列上少计算,范围之后全失效;LIKE百分写最右,覆盖索引不写*;不等空值还有OR,索引影响要注意;VAR引号不可丢,SQL优化有诀窍。...原创 2021-09-09 23:48:35 · 64 阅读 · 0 评论 -
MyISAM与InnoDB的区别
对比项 MyISAM InnoDB外键 不支持 支持事务 不支持 支持行表锁 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 行锁,操作时只锁某一行,不对其它行有影响,适合高并发的操作缓存 只缓存索引,不缓存真实数据 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响...原创 2021-09-09 23:47:11 · 64 阅读 · 0 评论 -
数据库程序在线访问方式和ORM方式的优缺点
原创 2021-08-30 22:47:13 · 668 阅读 · 0 评论 -
数据库完整性的作用
原创 2021-08-29 08:51:50 · 955 阅读 · 0 评论 -
MyISAM与InnoDB的区别
对比项 MyISAM InnoDB 外键 不支持 支持 事务 不支持 支持 行表锁 表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作 行锁,操作时只锁某一行,不对其它行有影响, 适合高并发的操作 缓存 只缓存索...原创 2021-07-05 20:49:46 · 79 阅读 · 0 评论 -
解决mysql版本依懒问题:java.sql.SQLException: Unknown system variable ‘query_cache_size‘
出现这个原因是因为连接mysql的驱动太低造成的,我部署在docker上面的mysql是8.0的版本,而我本地的项目配置连接mysql的驱动是5.11版本的,所以就报了这个错误,发现只要提供版本驱动包的版本就可以了,具体配置如下:<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version&g原创 2021-04-04 10:08:22 · 271 阅读 · 0 评论 -
union排序问题
今天在写sql的时候,发现有一个需求需要使用union和unionall来进行关联查询,需求是这样的,需要查询一个报告列表,展示的规则如下:1.先展示10天以内的推荐的报告数据2.然后查询2年以内的报告数据,按时间由近及远进行展示。这个就有一个问题,用之前的sql是解决不了用户希望的数据的,因为10天以内既有推荐的数据,也有没有推荐的数据,10天以外还有2年的数据需要查询,所以我就想到了使用union和unionall来进行联合查询,总的设计思路是这样的:a.我先去查询10天以内的推..原创 2021-02-24 20:25:20 · 3718 阅读 · 0 评论 -
什么是分库分区分表
一、什么是分库分区分表分库 分库就是将一个数据库服务实例按照业务逻辑拆分了多个数据库实例,以满足海量数据的业务请求,一般出现这种情况就是因为高并发、海量数据的请求过来使单个数据库的实例超出了系统能处理的最大QPS、TPS,即是因为数据库的处理能力满足不了系统性能的要求。所以现在开始实行微服务的架构,将之前的一个单体架构拆分了多个微服务系统实例,有一半的原因也是因为这样。分区 就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的分...原创 2021-02-17 23:11:58 · 1286 阅读 · 2 评论 -
centos7源码安装mysql执行cmake命令是出现CMake Error: The source directory does not appear to contai
在安装mysql 5.6.26 时执行cmake命令是出现CMake Error: The source directory does not appear to contain CMakeLists.txt.的错误,刚开始以为是cmake版本有问题,到最后才发现是当前目录错了。在执行cmake时没有切换到mysql的源码目录导致了这个错误,切换到mysql的源码目录重新执行cmake命令即可。以下的命令在解压后的目录内执行以下命令:cmake \-DCMAKE_INSTALL_PREFIX.原创 2020-10-31 14:41:01 · 3789 阅读 · 0 评论 -
mysql主从复制核心配置
Master /etc/my.cnf[mysqld]中增加## replicationserver_id=205#binlog-do-db=roncoobinlog-ignore-db=mysqllog-bin=edu-mysql-binbinlog_cache_size=1Mbinlog_format=mixedexpire_logs_days=7slave_skip_e...原创 2019-10-13 16:05:15 · 126 阅读 · 0 评论 -
MySQL 主从复制的配置以及调优排错分析
MySQL 主从复制的配置 环境操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL 版本:mysql-5.6.26.tar.gz 主节点 IP:192.168.1.205 主机名:edu-mysql-01 从节点 IP:192.168.1.206 主机名:edu-mysql-02 主机配置:4 核 CPU、4G 内存 MySQ...原创 2019-10-13 15:40:59 · 378 阅读 · 0 评论 -
MySQL 源码编译安装详细步骤
MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 部署环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL 版本:mysql-5.6.26.tar.gz 操作用户:root 系统 IP:192.168.1.205 主机名:edu-mysql-01 配置:4 核、4G 内存 一、服务器配置: ...原创 2019-10-13 14:50:39 · 680 阅读 · 1 评论 -
mysql版本下载地址
http://mirrors.sohu.com/mysql/MySQL-5.5/http://mirrors.sohu.com/mysql/MySQL-5.6/http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.6.26.tar.gz原创 2019-10-13 14:46:59 · 117 阅读 · 0 评论 -
mysql忘记密码的处理方式总结
方法一: 1、在DOS窗口下输入net stop mysql5 或 net stop mysql 2、开一个DOS窗口,这个需要切换到mysql的bin目录。一般在bin目录里面创建一个批处理1.bat,内容是cmd.exe运行一下即可就切换到当前目录,然后输入mysqld-nt --skip-grant-tables; 3、再开一个DOS窗口,mysql -u r原创 2016-06-22 17:20:10 · 332 阅读 · 0 评论 -
怎样在项目中开启JDBC事物控制
首先,先建一个datebase.properties文件,用于读取配置文件,里面装的代码如下:driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8user=rootpassword=123456smbms为mysql的数据库实例原创 2016-07-18 21:23:39 · 1447 阅读 · 0 评论 -
在JDBC中如何设置当前时间到数据库
一、时间类的类型 Java中的时间类为java.util.Date MySQL对应的时间类为java.sql.Date其中java.util.Date为java.sql.Date的父类,所以,在Java中创建的java.util.Date不能直接通过JDBC操作,插入到数据库中.通过JDBC查询数据库的时间java.sql.Date可以赋值给Java中的java.util.Date原创 2016-07-16 14:33:25 · 10975 阅读 · 0 评论 -
JDBC编程案例
1、把用户控制台输入的格式为"9999_zhangsan1_SALESMAN_7698_1981-02-20_2000_300_40" 字符串里数据(数据和emp列顺序一致)分割出来存入数据库表emp中, 如果添加成功则控制台打印“添加成功”,添加失败则打印"添加失败" (如主键重复,列数据长度超出等)。package com.mysql.jdbc;imp原创 2016-06-29 21:21:08 · 284 阅读 · 0 评论