
mysql
文章平均质量分 57
ldcaws
这个作者很懒,什么都没留下…
展开
-
Mysql中delete数据后磁盘空间浅析
在MySQL中,使用DELETE语句删除数据后,磁盘上的文件不会立即缩小,因为MySQL通常不会重建文件并删除不再使用的空间。这是因为DELETE操作只标记已删除的数据为可重用,并不立即清除物理存储空间。为了释放磁盘空间,你需要使用OPTIMIZE TABLE命令,它会重建表并删除未使用的空间。这适用于InnoDB和MyISAM表。但请注意,OPTIMIZE操作可能需要独占表访问权,且在大型表上执行时可能会消耗相当的处理时间和资源。原创 2024-07-18 18:23:59 · 836 阅读 · 0 评论 -
Mysql之规范那些事
有些知识时间长了就会忘,忘了就再次翻看,所谓学而时习之,温故而知新。下面参考网上大佬博文,再次梳理学习,并将整理内容记录下来。原创 2023-08-31 19:00:00 · 493 阅读 · 0 评论 -
高可用性和双机热备浅析
在用户眼里,业务需要永远正常对外提供服务,这就要求应用系统的高可用(High availability,即 HA)。高可用主要是针对架构而言,第一步一般会采用分层的思想将一个庞大的应用系统拆分成应用层、中间件、数据存储层等独立的层,每一层再拆分成更细粒度的组件;第二步就是让每个组件对外提供服务,毕竟每个组件都不是孤立存在的,都需要互相协作,对外提供服务才有意义;第三步就是保证架构中所有组件以及对外暴露服务都要做到高可用,任何一个组件或其服务没做高可用,都意味着系统存在风险。原创 2023-05-30 20:30:00 · 1883 阅读 · 0 评论 -
Mysql之高可用方案浅析
在工程项目中,系统应用的高可用性越来越重要,业主越来越重视。其实高可用可以分为应用层高可用和数据层高可用,数据层高可用中常见的有关系型数据库mysql的高可用、非关系型NoSQl数据库redis的高可用等,下面聊聊典型的关系型数据库mysql的高可用方案。原创 2023-05-27 22:05:06 · 3499 阅读 · 1 评论 -
Mysql中千万数据查询浅析
假如mysql数据库中有一千万数据,如何进行查询,查询效率如何,下面进行简单的分析。原创 2023-05-23 19:00:00 · 2888 阅读 · 0 评论 -
浅入浅出keepalived+mysql实现高可用双机热备
当数据库发生宕机的情况,如果配置了数据库主从同步模式或主主同步模式,则可以从从库中获取数据。当数据库发生宕机的情况,要求应用系统实现高可用,应用系统不会受到影响,需要对mysql进行双机热备实现数据库的高可用。实现双机热备的方式有Mycat组件方式、canel组件方式、keepalived组件方式,下面对keepalived实现mysql双机热备进行简单的分析。原创 2023-03-06 21:53:41 · 827 阅读 · 0 评论 -
Mysql之常见可视化管理工具
mysql在日常开发中作为基础软件,对其数据的管理必不可少,除了系统自带的命令行管理工具之外,还有许多其他的图形化管理工具,下面介绍常见的mysql图形化管理工具。原创 2023-01-05 21:30:00 · 8903 阅读 · 4 评论 -
Mysql之优化方法浅析
当确认各个select查询不可能出现重复结果集或不在乎重复结果集的时候尽量用union all而不是union,因为union和union all的差异主要是前者需要将两个或多个结果集合并后再进行唯一性过滤,会涉及到排序,增加了cpu运算,和资源消耗。mysql是一种关系型数据库,可以很好地支撑大数据量的存储,但一般来说,数据库中的表越小,执行的查询也就越快,因此在建表时,选择最合适的字段属性,使字段的长度尽可能的小。如,在定义名称字段时,若将其设置为char(255),显然给数据库增加了不必要的空间。原创 2022-10-17 19:30:00 · 398 阅读 · 0 评论 -
Mysql之表设计浅析
如char(10)表示字符长度为10,而bigint(4)表示字节长度为4,但因为bigint实际长度是8个字节,所以bigint(4)的实际长度就是8个字节。由于物理删除后恢复数据困难,在业务表中的数据建议做逻辑删,即更改数据的状态,否则容易引发关联问题。通常在设计表结构时,需要考虑添加通用字段,如主键、create_time,update_time,create_id,update_id,remark等。主键设计的话,最好不要与业务逻辑有关联,如身份证,虽然是唯一的,但不建议。5、逻辑删除与物理删除。原创 2022-10-11 19:30:00 · 788 阅读 · 0 评论 -
Mysql之删除操作浅析
在mysql中,删除的方式有3种,分别为delete、truncate、drop,下面对3种方式进行简单的分析其特点和使用的场景。原创 2022-06-15 19:00:00 · 5064 阅读 · 0 评论 -
Java中分库分表再相约
分库分表越来越影响系统应用的高可用、高并发问题,下面和分库分表再相约,聊聊mysql环境的分库分表。what:什么是分库分表why:为什么需要分库分表how:如何进行分库分表when/where:什么时候/环境考虑分库分表problem:分库分表带来的问题what分库,就是将一个数据库分成多个数据库,部署到不同的机器。分表,就是将一个数据表分成多个数据表。why数据量越来越大,数据库会出现性能瓶颈。分库,随着业务量剧增,单个数据库所在机器的磁盘容量可能会撑爆,分成多个数据库,原创 2022-04-16 12:26:36 · 1313 阅读 · 0 评论 -
Mysql之时间条件查询浅析
DATE_ADD()函数DATE_ADD() 函数向日期添加指定的时间间隔。DATE_ADD(date,INTERVAL expr type)date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。type 参数可以是下列值:SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR等DATE_SUB函数DATE_SUB函数向日期减去指定的时间间隔。DATE_SUB(date,INTERVAL expr type)date参数是合肥的日原创 2022-04-11 22:16:42 · 6952 阅读 · 0 评论 -
Mybatis之分组查询
在应用开发中,分组统计是非常经典的需求,在springboot+mybatis+mysql中实现分组统计。学生信息统计场景,学生包含姓名、性别、年龄、地址等属性。按性别分组统计数量按地址分组统计数量按地址、性别分组统计数量1、mysql中sql语句DROP TABLE IF EXISTS `student`;CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) CHARA原创 2022-04-11 20:42:47 · 11200 阅读 · 0 评论 -
Mysql之数据库设计规范浅析
在系统应用开发中,小伙伴对业务需求进行梳理并进行数据库设计,在对小伙伴的mysql数据库设计进行评审时,发现到处是非常难以理解的基础问题,这下着急了,下面马上对mysql数据库设计规范进行简单分析。标准的设计流程为:需求分析、概念结构设计(概念视图)、逻辑结构设计(逻辑视图)、物理结构设计(物理视图)、数据库落地;具体参考大佬相关博文,此处只是对基本的进行浅显的论述。1、数据库命名规范命名简洁明确,长度不能超过30个字符,采用26个英文大小写字母、0-9数字和下划线组成;示例:shop,也可以为ji原创 2022-03-22 22:13:57 · 697 阅读 · 0 评论 -
Mysql之int(n)长度浅析
mysql数据库作为当前常用的关系型数据库,肯定会遇到设计表的需求,下面对设计表时int类型的设置进行分析。如对用户表user添加一个user_id字段,数据类型为int,设置为:int(1);mysql中int占4个字节,每个字节为8位(二进制中的8位),那么无符号int的最大值为2^32-1=4294967295,达到40亿,难道用了int(1),就不能存储这个最大值吗?测试CREATE TABLE `user` ( `id` int(1) unsigned NOT NULL AUTO_IN原创 2022-01-25 09:47:51 · 9288 阅读 · 0 评论 -
springboot+shardingsphere温故而知新
前面也分析过springboot集成shardingsphere组件实现分库分表。分库分表主要解决海量数据引起的IO问题、查询慢等问题。ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 3 款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能。1、ShardingSphere-JDBC:定位为轻量级 Java 框架,在 Java 的 JDBC 层提供额外服务。它使用客户端直连数据库,以 jar 包形式提供服务,无需额原创 2022-01-19 22:43:48 · 3972 阅读 · 0 评论 -
Java之分布式锁浅谈
在java开发中,分布式锁常见的有redis分布式锁、zookeeper分布式锁 和 数据库分布式锁3种方式redis分布式锁应用setNXSETNX key value将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。返回值:设置成功,返回 1 。设置失败,返回 0 。zookeeper分布式锁zookeeper种节点的顺序性,如原创 2021-11-22 21:30:45 · 671 阅读 · 0 评论 -
ubuntu16.04环境安装mysql5.7及配置主从模式
在面对数据的快速增长,为提升系统的性能和响应速度,通常引入主从模式。下面介绍mysql数据库在Ubuntu系统中的安装及主从配置。未完待续原创 2021-10-26 21:11:50 · 778 阅读 · 0 评论 -
springboot+mysql+sharding分库分表初尝试
随着数据库的读写压力增大及数据量的增加,出现了数据库中间件进行分库分表的场景,现对sharding数据库中间件进行分库分表的实现进行尝试。分库?单个数据库》多个数据库分表?单个表》多个表数据的切分(Sharding)分为水平分库(将数据按某种条件分开存储)和垂直分库(将数据按不同表分开存储)。maven核心依赖<dependency> <groupId>org.springframework.boot</groupId>原创 2021-10-12 22:15:27 · 407 阅读 · 0 评论 -
springboot+mysql读写分离(二)
本文上接前文,分析通过sharding的方式实现读写分离。通过sharding数据库中间件实现读写分离,废话不说,直接上代码。maven部分依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependen原创 2021-10-12 22:06:28 · 121 阅读 · 0 评论 -
springboot+mysql读写分离(一)
系统在设计之初就应该对业务数据的耦合松紧进行考量,从而进行垂直分库、垂直分表,使数据层架构清晰明了。 若非必要,无需进行水平切分,应先从缓存技术着手降低对数据库的访问压力。如果缓存使用过后,数据库访问量还是非常大,可以考虑数据库读、写分离原则。若当前数据库压力依然大,且业务数据持续增长无法估量,最后可考虑水平分库、分表,单表拆分数据控制在1000万以内。读写分离?读一个库,写一个库,依赖于mysql主从模式,可理解成是分库的一种业务场景(分库策略)。读写分离可以通过sping的路由数据源和切面方式实现,原创 2021-10-12 21:20:52 · 274 阅读 · 0 评论 -
Mysql之字符集与排序规则
在创建mysql数据库时字符集一般选择utf8或urf8mb4.utf8与utfmb4的区别utf8mb4兼容utf8,且比utf8能表示更多的字符。至于什么时候用,看你的做什么项目了;看unicode编码区从1 ~ 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候你需要存储那些字符,你才用utf8mb4,否则只是浪费空间。排序规则一般选择utf8_general_ci或utf8mb4_general_ci.utf8_general_原创 2021-05-25 11:18:12 · 1238 阅读 · 0 评论 -
Mysql之性能优化浅析
现在,越来越多的项目中数据库采用mysql,在数据量上来后就会遇到海量数据的查询速度慢的问题。举个栗子,mysql数据库,student表,主键自增,在select分页查询时,查询前几页速度很快,如 limit 100,10;但数据量很大,查询后面的页时就会越来越慢,如,select * from student where name = '曹操' order by no limit 1000 000,10; 查询慢时因为limit后面的 偏移量 太大所致,需要先扫描出1000 000条(100w)原创 2021-05-24 10:49:14 · 127 阅读 · 2 评论 -
Java中分库分表粗谈
在java应用研发中可能会遇到数据库瓶颈突发问题,现对其问题分析粗略记录一下。后续有更深理解应用会更新。数据库服务受所安装在机器的硬件配置影响,影响数据库服务访问性能有两种情况,一种是IO瓶颈,一种是CPU瓶颈,这两种情况均会产生数据库瓶颈。java应用中出现数据库瓶颈时可通过分库分表方式减轻数据库服务的访问压力。(连接请求数)分库分表还可能涉及到读写分离。数据库分库分表分为:水平分库、垂直分库、水平分表、垂直分表当数据库数据量大时采用分库(水平、垂直)来减轻IO瓶颈问题;当单表数据量大原创 2021-02-07 14:29:20 · 583 阅读 · 1 评论 -
springboot+mysql读写分离
在javaweb开发中数据库表数据量会越来越大,为了减轻数据库读写压力,对数据库进行主从模式部署(一主一从,多主多从),在应用层面可以通过spring提供的路由数据源+注解+切面进行控制,在代码层面切换不同数据库源,不同操作选择不同数据库。代码如下: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-b原创 2021-01-13 20:52:18 · 234 阅读 · 1 评论 -
oracle的rownum和mysql的limit浅析
oracle 是通过rownum虚列来实现分页的; mysql采用limit关键字实现分页;oracle示例,查询出月薪排在前5位的员工:selectrownum,ta.* from ( selectempno,ename,job,salfromemporderbysaldesc )tawhererownum<=5mysql示例:SELECT*FROMtableLIMIT[offset,]rows|rowsOFFSEToffs...原创 2021-01-11 20:55:58 · 774 阅读 · 0 评论 -
MYSQL之索引浅析
一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?案例浅析创建一张表,一个主键,一个普通索引CREATE TABLE `T`(`id` int(11) NOT NULL,`a` int(11) DEFAUT NULL,PRIMARY KEY(`id`),KEY `a`(`a`)) ENGINE=InnoDB;该表有三个字段,其中用id是主键索引,a是普通索引。首先SQL判断一个语句是不是慢查询语句,用的是语句的执行时间。语句执行过程中有没有用到表的索引,可以通过explain一原创 2020-11-03 21:45:12 · 137 阅读 · 0 评论 -
mysql中tinyint和int
数据库中表结构设计是经常会用到int类型,还会加上长度限制,之前不注意,现在将分析记录下来。mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill时有用。如int(3),如果实际值是2,如果列指定了zerofill,查询结果就是002,左边用0来填充。mysql中设置了储存类型后,储存是定长的,也就是说,int(1) 和 int(4) 在硬盘中所占的字节数都是一样的。int类型占4个字节,tinyint占1个字节。int(1) 和 int原创 2020-10-16 12:50:33 · 2084 阅读 · 0 评论