
mysql
文章平均质量分 76
xushiyu1996818
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
mysql性能监控与执行计划
MySQL的performance schema 用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况。特点如下:1、提供了一种在数据库运行时实时检查server的内部执行情况的方法。performance_schema 数据库中的表使用performance_schema存储引擎。该数据库主要关注数据库运行过程中的性能相关的数据,与information_schema不同,information_schema主要关注server运行过程中的元数据信息。...原创 2022-08-08 18:21:12 · 558 阅读 · 0 评论 -
mysql服务器参数设置
服务器线程缓存,这个值表示可以重新利用保存再缓存中的线程数量,当断开连接时,那么客户端的线程将被放到缓存中以响应下一个客户而不是销毁,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,这个线程将被重新请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值即可。主要控制innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,值分别为0,1,2。Qcache_free_blocks:缓存中相邻内存块的个数,如果值比较大,那么查询缓存中碎片比较多。...原创 2022-08-08 18:20:24 · 733 阅读 · 0 评论 -
ShardingJDBC使用总结
Hint分片策略(HintShardingStrategy)相比于上面几种分片策略稍有不同,这种分片策略无需配置分片健,分片健值也不再从SQL中解析,而是由外部指定分片信息,让SQL在指定的分库、分表中执行。读写分离的概念大家应该已经很熟练了,此处不在赘述,下面我们通过sharding-jdbc来实现读写分离,其实大家应该已经发现了,所有的操作都是配置问题,下面我们来讲一下具体的配置,关于读写分离的原理,以及如何配置mysql的主从复制,我们就不在多聊了,直接看sharding-jdbc的配置。...原创 2022-07-23 21:59:44 · 1085 阅读 · 0 评论 -
ShardingJDBC基本介绍
ApacheShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由JDBC、Proxy和Sidecar(规划中)这3款相互独立,却又能够混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。ApacheShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。...原创 2022-07-23 21:59:11 · 1703 阅读 · 0 评论 -
group by的工作原理和优化思路
目录引入group by 原理分析group by 的简单执行流程临时表的排序是怎样的呢?where 和 having的区别where + having 区别总结使用 group by 注意的问题group by一定要配合聚合函数使用嘛?group by 后面跟的字段一定要出现在select中吗?group by导致的慢SQL问题group by的一些优化方案group by 后面的字段加索引order by null 不用排序尽量只使用内存临时表原创 2022-05-28 01:04:05 · 1355 阅读 · 1 评论 -
char、varchar和nvarchar的区别
注意:本文参考 mysql的nvarchar_MySQL中char、varchar和nvarchar的区别_路怜涯的博客-优快云博客一、char和varchar的区别char是固定长度的,而varchar会根据具体的长度来使用存储空间,另外varchar需要用额外的1-2个字节存储字符串长度。1). 当字符串长度小于255时,用额外的1个字节来记录长度2). 当字符串长度大于255时,用额外的2个字节来记录长度比如char(255)和varchar(255),在存储字符串"he...原创 2022-05-12 23:24:57 · 538 阅读 · 0 评论 -
数据库案例
目录微信朋友圈设计用户及用户关系发朋友圈CDN发布表相册表时间线刷朋友圈删除、拉黑、标签、不让他看、三天可见该怎么办谁可以看标签第二步的权限控制评论和赞微信朋友圈设计用户及用户关系肯定有用户表作为基础用户关系表,用户id1,用户id2,关系用户关系分组表,用户id1,用户id2,对应分组发朋友圈CDN当我们把精心修好的图,朋友圈点击发送。是不是有一种秒发零延迟的感觉?那是因为,我们在发朋友圈时,第一步动作是把你发布的图片原创 2021-10-24 22:37:09 · 2078 阅读 · 0 评论 -
mysql外键总结
目录简介外键的规则主键、外键和唯一索引的区别语法在创建表时设置外键约束在修改表时添加外键约束删除外键约束外键级联级联的优势与劣势简介MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。比如,一个水果摊,只有苹果、桃子、李子、西瓜等原创 2021-10-24 13:31:23 · 651 阅读 · 0 评论 -
mysql 嵌套查询优化
注意:本文参考查询优化之嵌套查询 - 知乎嵌套查询简单来说就是有子查询的SQL语句,子查询可以出现在SLECT, FROM或者WHERE 子句中,也可以单独用WITH子句来定义一个子查询。使用时子查询可以将一个复杂的查询拆分成一个个独立的部分,逻辑上更易于理解以及代码的维护和重复使用。有利于程序查询缓存,减少锁的竞争,减少查询冗余,应用层面相当于实现哈希关联。更容易对数据库进行拆分,做到高可用,易拓展,解耦。但是子查询另一个很明显的问题就是效率比较低,比如创建临时表和查询时重复扫表。所以我们可以根据..原创 2021-10-12 00:11:03 · 2842 阅读 · 2 评论 -
mysql存储结构与插入删除
小弟问我:为什么MySQL不建议使用delete删除数据?InnoDB存储架构从这张图可以看到,InnoDB存储结构主要包括两部分:逻辑存储结构和物理存储结构。逻辑上是由表空间tablespace —> 段segment或者inode —> 区Extent ——>数据页Page构成,Innodb逻辑管理单位是segment,空间分配的最小单位是extent,每个segment都会从表空间FREE_PAGE中分配32个page,当这32个page不够用时,会按照以下原则...原创 2021-10-07 22:02:28 · 541 阅读 · 0 评论 -
mysql 存储引擎
MySQL的存储引擎在文件系统中,MySQL将每个数据库(也可以称之为schema)保存为数据目录下的一 个子目录。创建表时,MySQL会在数据库子目录下创建一个和表同名的.frm文件保存 表的定义。例如创建一个名为MyTable的表,MySQL会在MyTable.frm文件中保存该表 的定义。因为MySQL使用文件系统的目录和文件来保存数据库和表的定义,大小写敏 感性和具体的平台密切相关。在Windows中,大小写是不敏感的,而在类Unix中则是 敏感的。不同的存储引擎保存数据和索引的方式是不同的..原创 2021-10-06 22:18:19 · 401 阅读 · 0 评论 -
mysql DDL如何执行
注意:本文参考 三歪连MySQL大表怎么DDL变更都不懂DDL概述MySQL中的DDL语句形式比较多,概括一下有以下几类:CREATE,ALTER,DROP,RENAME,TRUNCATE。这些操作都是隐式提交且原子性,要么成功,要么失败,在MySQL 8.0之前DDL操作是不记录日志的。今天就聊一下跟系统版本发布相关的数据库结构变更,主要就是ALTER TABLE变更了,DDL变更流程普通的DML变更是类似的,如下所示注:这里涉及MySQL基础知识,还不知道的朋友翻看下我MyS..原创 2021-10-06 22:17:45 · 1940 阅读 · 0 评论 -
mysql事务机制
事务简介在理解事务的概念之前,接触数据库系统的其他高级特性还言之过早。事务就是一组原子性的SQL查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行成功,要么全部执行失败。银行应用是解释事务必要性的一个经典例子。假设一个银行的数据库有两张表:支票 (checking)表和储蓄(savings)表。现在要从用户Jane的支票......原创 2021-09-12 22:15:35 · 1199 阅读 · 0 评论 -
mysql LENGTH与CHARACTER_LENGTH方法的区别
参考了 https://blog.youkuaiyun.com/t_1007/article/details/89603757CREATE TABLE char_len_gbk (mark varchar(10) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=gbkSELECT CHARACTER_LENGTH(mark),LENGTH(mark),mark FROM test.char_len_gbk;CHARACTER_LENGTH(str)1、单位为字符..原创 2020-06-19 14:04:29 · 1979 阅读 · 0 评论 -
mysql information_schema 总结
目录information_schema简介information_schema数据库常用表具体用途的系统表关于字符集和排序规则相关的系统表权限相关的一些表存储数据库系统的实体对象的一些表约束外键等相关的一些表关于管理的一些的一些表关于表信息和索引信息的一些表关于MySQL优化相关的一些表关于MySQL事物和锁的相关的一些表用途查看数据库各个表数据占用空间大小查看数据库中各个表字段个数查看数据库各个表的数据条数information_sche.原创 2020-06-16 15:41:07 · 404 阅读 · 0 评论 -
mysql 存储过程总结
目录存储过程简介创建语法delimiter创建存储过程调用存储过程删除存储过程区块定义条件语句if elsecase循环语句whilelooprepeatLABLES标号ITERATE迭代ITERATEMySQL需要注意的问题存储过程简介迄今为止,我们学过的大多数SQL语句都是针对一个或多个表的单条语句。但是并不是所有的操作都是可以用一条语句来完的,经常有一些操作是需要多条语句配合才能完成。我们引入的存储过程(Stored...原创 2020-06-16 15:01:30 · 1463 阅读 · 0 评论 -
msyql NULL与count总结
目录空值与NULLNULL与其他数据的运算ISNULL( )和IFNULL()count (1)、count (*) 与 count (列名) 的区别各函数对Null的处理空值与NULL相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问:1、我字段类型是not null,为什么我可以插入空值2、为毛not null的效率比null高3、判断字段不为空的时候,到底要 select * from table where column &l原创 2020-06-11 17:27:04 · 766 阅读 · 0 评论 -
Rollback Segement ,delete与truncate的区别
目录Rollback Segmenttruncate与delete的区别Rollback SegmentRollback Segments是在你数据库中的一些存储空间,它用来临时的保存当数据库数据发生改变时的先前值。Rollback Segment主要有两个目的:1. 如果因为某种原因或者其他用用户想要通过ROLLBACK声明来取消一个人的数据操作,数据就会复原到之前为改变时的值。这种情况只在transaction的过程中有效。如果用户执行了COMMIT命令,那么ROLLBACK原创 2020-06-11 16:01:26 · 674 阅读 · 0 评论 -
mysql常用命令
目录DDL命令数据库增删改查用表格增删改查基本增删改查DDL命令DDL主要负责数据库的创/改/查/删以及表格的创/改/查/删数据库增删改查用1.创建数据库:create database [数据库名] character set [字符编码];例如:create database study1 character set utf8; 2.查看数据库:show databases;3.查看数据库创建明细:show create databas原创 2020-06-04 16:01:48 · 226 阅读 · 0 评论 -
mysql锁机制与MVCC
目录乐观锁&悲观锁悲观锁悲观锁-数据表中的实现悲观锁-扩展思考乐观锁乐观锁-数据表中的实现乐观锁-乐观锁的锁粒度乐观锁-扩展训练乐观锁&悲观锁-小总结共享锁&排他锁&意向锁&间隙锁排他锁&共享锁共享锁(shared locks,S锁)排他锁(exclusive locks,X锁)意向锁意向锁......原创 2020-04-16 15:54:50 · 1117 阅读 · 2 评论 -
MySQL优化面试
注意:本文引用 https://zhenganwen.top/posts/433a3305/概要一、概述为什么要优化系统的吞吐量瓶颈往往出现在数据库的访问速度上随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢数据是存放在磁盘上的,读写速度无法和内存相比如何优化设计数据库时:数据库表、字段的设计,存储引擎利用好MySQL自身提...原创 2020-04-16 14:49:21 · 2060 阅读 · 1 评论 -
mysql 读写分离
目录读写分离简介what 什么是读写分离?why 为什么要读写分离呢?when 什么时候要读写分离?主从复制与读写分离mysql读写分离mysq支持的复制类型复制的工作过程mysql读写分离原理常见的Mysql读写分离基于程序代码内部实现基于中间代理层实现读写分离简介what 什么是读写分离?读写分离,基本的原理是让主数据库处理事务性增...原创 2020-02-08 16:26:33 · 450 阅读 · 0 评论 -
mysql binlog、redo log、undo log
目录重做日志(redo log)重做日志-作用重做日志-内容重做日志-什么时候产生重做日志-什么时候释放重做日志-对应的物理文件重做日志-其他回滚日志(undo log)回滚日志-作用回滚日志-内容回滚日志-什么时候产生回滚日志-什么时候释放回滚日志-对应的物理文件回滚日志-其他:二进制日志(binlog)二进制日志-作用二进制日.........原创 2020-02-07 17:14:02 · 5146 阅读 · 1 评论 -
mysql分库分表
目录为什么要分库分表数据切分垂直(纵向)切分水平(横向)切分根据数值范围根据数值取模分库分表带来的问题与解决方案事务一致性问题跨节点关联查询 join 问题跨节点分页、排序、函数问题全局主键避重问题数据迁移、扩容问题什么时候考虑切分能不切分尽量不要切分数据量过大,正常运维影响业务访问随着业务发展,需要对某些字段垂直拆分数据量快速...原创 2020-01-07 15:54:37 · 2219 阅读 · 0 评论 -
mysql 分区表
对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象(Handler Object)的封装。对分区表的请求,都会通过句柄对象转化成对存储引擎的接口调用。所以分区对于SQL层来说是一个完全封装底层实现的黑盒子,对应用是透明的,但是从底层的文件系统来看就很容易发现,每一个分区表都有一个使用#分隔命名的表文件。MySQL实现分区表的方式一对底层表的封装一一意味着索引也是按照分区的子表定义的,而没有全局索引。...原创 2020-01-06 17:44:58 · 12211 阅读 · 0 评论 -
SQL语句执行过程与查询优化器
1) 连接器连接器主要和身份认证和权限相关的功能相关,就好比一个级别很高的门卫一样。主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作,如果用户账户密码已通过,连接器会到权限表中查询该用户的所有权限,之后在这个连接里的权限逻辑判断都是会依赖此时读取到的权限数据,也就是说,后续只要这个连接不断开,即时管理员修改了该用户的权限,该用户也是不受影响的。2) 查询缓存(MySQL 8.0 版本后移除)查询缓存主要用来缓存我们所执行的 SELECT 语句以及该语句的结果集。...原创 2020-01-03 13:51:56 · 1314 阅读 · 1 评论 -
慢查询的重构和优化特定类型的查询
目录为什么查询速度会慢如何找到慢查询慢查询原因偶尔很慢的情况访问数据过多是否向数据库请求了不需要的数据MySQL是否在扫描额外的记录重构查询的方式一个复杂查询还是多个简单查询切分查询分解关联查询慢查询总结优化特定类型的查询优化COUNT()查询(重要)COUNT()的作用关于MylSAM的神话简单的优化使用近似值写更复杂的优化优化关联查询(重要)优化子查询优化GROUP BY和DISTINCT优化GROUP BY WITH ROLLUP优化LIMIT分页(重要)优化SQL_CALC_FOUND_ROWS优化原创 2020-01-03 13:54:11 · 511 阅读 · 0 评论 -
mysql 索引案例与索引策略
表的主键最好是递增的数字,而不是随机的(因为聚簇索引的物理结构)查询的列要是单独的如果有and,不要多个单列索引,可以考虑一个多列索引,注意索引顺序如果有or,可以考虑用union,或者索引合并如果查询条件里,有不能完全覆盖的,如like,范围查询,但是where之后返回的结果很少的查询条件,可以使用索引查询到对应的主键,然后使用延迟关联,查询到对应的列。如果有排序,只有排序字段是索引字段前几个字段,才能使用索引排序(除非索引字段中,排序字段前的字段是常量)...原创 2019-12-24 17:32:59 · 1169 阅读 · 0 评论 -
mysql 索引理论总结
目录索引基础B-Tree索引哈希索引自定义哈希索引空间数据索引(R-Tree)全文索引其他索引类别索引的优点索引案例学习支持多种过滤条件避免多个范围条件优化排序维护索引和表找到井修复损坏的表更新索引统计信息减少索引和数据的碎片总结索引基础索引(在MySQL中也叫做“键(key)")是存储引擎用于快速找到记录的一种数据结构。............原创 2019-12-25 15:49:39 · 765 阅读 · 0 评论 -
mysql 范式与数据类型优化
目录选择优化的数据类型整数类型实数类型字符串类型VARCHAR和CHAR类型BLOB和TEXT类型磁盘临时表和文件排序使用枚举(ENUM)代替字符串类型日期和时间类型DATETIMETIMESTAMP位数据类型BITSET选择标识符(identifier)当心自动生成的schema特殊类型数据MySQL schema设计中的陷......原创 2019-12-16 17:56:20 · 411 阅读 · 0 评论 -
mysql基础
目录MySQL逻辑架构连接管理与安全性优化与执行并发控制读写锁锁粒度表锁(table lock)行级锁(row lock)事务ACID四大特性原子性(atomicity)一致性(consistency)隔离性(isolation)持久性(durability)隔离级别READ UNCOIMITTED (未提交读)READ COM...原创 2019-12-11 17:26:27 · 657 阅读 · 0 评论 -
mysql 获取行号和排序号
目录简介行号排序号简介获取行号和排序号的基础就是用户变量,利用用户变量不断递增赋值来得到行号和排序号。示例 user表行号select a.name,a.age ,@rownum:=@rownum+1 as rownumfrom(select * from user ORDER BY age) a ,(SELECT @rownum:=0) t(S...原创 2019-10-31 16:19:21 · 11190 阅读 · 5 评论 -
mysql 系统变量和用户变量
目录系统变量全局变量会话变量用户变量:=和=的区别java中:=系统变量MySQL可以访问许多系统和连接变量。当服务器运行时许多变量可以动态更改。这样通常允许你修改服务器操作而不需要停止并重启服务器。mysqld服务器维护两种变量。全局变量影响服务器整体操作。会话变量影响具体客户端连接的操作。全局变量当服务器启动时,它将所有全局变量初始化为默认值。...原创 2019-10-31 15:35:12 · 1782 阅读 · 1 评论 -
mysql 游标使用
mysql 游标一般用于存储过程中,用于一行一行操作数据#首先定义剩余值 和游标插入的数据declare no_more_record int default 0; declare client varchar(50);declare proxy varchar(100);#然后定义查询游标DECLARE cur1 CURSOR FOR SELECT clie...原创 2018-10-19 16:49:43 · 204 阅读 · 0 评论 -
mysql 创建存储过程
注意 delimiter的意思是将分割号改为// 最后又改为;所以delimiter与后面的符号要空一格注意// ; begin end的位置DROP PROCEDURE IF EXISTS wap; DELIMITER // create procedure wap(in vdate varchar(10) ) ## 创建存储过程 begin declare v_d...原创 2018-10-19 15:35:04 · 1268 阅读 · 0 评论 -
mysql 查询结果导入文件或excel 文件导入数据库
方法1进入mysql服务器中select * from www limit 1000 into outfile '/xusy/www.xls';注意文件名外有单引号如果方法1不行,当连接外部服务器方法2直接进行操作mysql -utest -p123456 -h10.1.5.8 -P3306 -e"select * from his limit 1000 " pop> ...原创 2018-10-18 14:43:57 · 1215 阅读 · 0 评论 -
mysql 查询字段 与另一个字段比较大小,视情况为自己或者另一个字段
普通的java,js 程序中,用的是max(a,0) 但是mysql 查询的字段,max函数的意思不一样,不能用 所以用case whencase when a>0 then a else 0 end 注意有关键词 case when then else end 五个一个都不能少SELECT count(DISTINCT id), sum(total), ...原创 2018-09-07 15:35:25 · 14714 阅读 · 0 评论 -
mysql 一张表减另一张表
前提是双方数据结构相同,至少得用一个外键 查询表1-表2的数据 就是查询 表1 中 (主键 不在表2)的数据 用not exists 后面的select* 的结果如果为空,则为false 有数据,即主键存在,在为trueSELECT id, total, now_use, next_use, now_return, next_return, now_balance, n...原创 2018-09-07 15:20:26 · 1903 阅读 · 0 评论 -
hibernate 5 mysql basedao
这个basedao在查询,保存等动作的最后是syso结果的,如果不要请删除package com.ssh.dao;import java.util.List;public interface BaseDao { public void save(Object object); public void update(Object object); publi...原创 2018-09-17 09:59:31 · 548 阅读 · 0 评论 -
正则表达式-mysql中使用
mysql 使用正则表达式使用REGEXP 具体语法为str REGEXP regstr 两个都为字符串,都是要加双引号或单引号 如 “1224” REGEXP “123+4”mysql 中转义符需要两个反斜杠,因为正则表达式需要一个,mysql语法解释正则的那个也要一个。 如 “122+4” REGEXP “12+\\+4”...原创 2018-08-03 15:22:53 · 350 阅读 · 0 评论