数据库相关
文章平均质量分 55
有趣的灵魂_不世俗的心
这个作者很懒,什么都没留下…
展开
-
MYSQL优化大全
原创 2024-06-07 17:52:02 · 128 阅读 · 0 评论 -
MySQL添加索引导致表死锁问题
出现该问题描述:由于SQL慢,希望通过索引优化,发现很多单字段索引、且组合索引缺少一些关键字段,便决定删除单字段索引,补全组合索引。修改完索引后提交,发现执行时间几个小时都没有执行完成。造成结果:测试环境数据库表死锁,一些数据库执行语句查询超时。MySQL有三种锁的级别:页级、表级、行级。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;原创 2022-04-01 15:58:04 · 4716 阅读 · 0 评论 -
MySQL架构总览->查询执行流程->SQL解析顺序
文章目录一、MySQL架构总览:二、查询执行流程1.连接2.处理3.结果三、SQL解析顺序准备工作create database testQuerySQL解析1. FROM2 ON过滤3 Join4. WHERE5. GROUP BY6. HAVING7. SELECT8 .ORDER BY9 .LIMIT 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。 本文将从MySQL总体架构—>查询执行流程—>语句执行顺序来探讨一下其转载 2022-02-26 16:29:41 · 525 阅读 · 0 评论 -
MySQL优化实例
MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况。阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题。现将《ApsaraDB专家诊断报告》中出现的部分常见SQL问题总结如下,供大家参考。常见SQL错误用法1. LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,转载 2022-02-26 15:46:17 · 338 阅读 · 0 评论 -
SpringBoot+MybatisPlu+Druid集成ClickHouse
首先就是引入依赖<!-- 集成clickhouse --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency> <dependency> <groupId>ru.y原创 2021-11-28 17:43:46 · 1583 阅读 · 0 评论 -
CentOS7安装clickhouse
本文采用采用在线安装的方式安装clickhousesudo yum install yum-utilssudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPGsudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64sudo yum install clickhouse-server clickhouse-client以原创 2021-11-28 17:23:57 · 692 阅读 · 0 评论 -
解决阿里云云服务器上安装mysql远程无法连接问题
在Linux系统的ECS实例上自建MySQL服务器,可能会出现无法远程连接异常情况,本文主要介绍该情况下的常见错误及解决办法。详细信息阿里云提醒您:如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。以下列举一些常见问题及解决办法。目录阿里服务器防火墙配置导致原创 2021-06-15 14:20:36 · 3440 阅读 · 0 评论 -
Mybatis-plus性能分析插件—PerformanceInterceptor
/** * MyBatiesPlus sql执行性能分析 * @return */ @Bean public PerformanceInterceptor performanceInterceptor() { PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); //格式化sql语句 Properties p..原创 2021-06-11 15:40:30 · 2514 阅读 · 1 评论 -
mysql实现主从复制
1、首先我们需要安装好mysql的两台服务器:2、配置主从服务器(1)主服务器配置#1、主服务器vim /etc/my.cnf在文件末尾增加###从服务器server_id(建议使用服务器IP末位值)server_id=178 ###日志文件同步方式log-bin=mysql-bin 2、保存配置,重启mysql服务生效service mysqld restart3、验证是否成功#查看变量是否存在show variables like '%server_id.原创 2021-03-13 16:20:11 · 91 阅读 · 0 评论 -
PG+PostGis实现按照指定经纬度和范围查询附近的站点
需求:查询指定经纬度,指定范围的公交站点,例如查询经度:113.925258, 纬度:27.628368,附近5000米的公交站点使用函数:ST_Distance_Sphere,作用查询两点间距离,单位米(直线距离),和百度地图测距数据基本一致具体实现SQL如下select t.*, ST_Distance_Sphere(st_setsrid(st_makepoint(longitude,latitude),4326), st_setsrid(st_ma原创 2021-01-05 17:12:04 · 2646 阅读 · 1 评论 -
ClickHouse中通过字段分组并获取分组排序后每组的前N条数据
下面以股票交易数据为例子:需求为获取每个股票最后五个交易日的交易数据。ClickHouse不提供窗口函数,那么解决思路变为先找到每个股票的最后五个交易日期,然后再通过股票代码和交易日期关联源表获得相应详细交易数据。怎嘛解决?思路:1、按照股票分组,并按照股票和时间排序。 2、groupArray函数分组数据合并函数,arrayJoin函数可以将array中的元素展开为行groupArray函数用法说明:groupArray(x)和groupArray(max_si...转载 2020-12-31 10:50:06 · 14369 阅读 · 2 评论 -
数据库事务与锁详解
事务的4个特性:原子性(Atomic):事务必须是原子单位;操作要么成功,要么失败。事务的一致性(Consistency):指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。 拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。隔离性(Isolation):多个用户并发访问数据库,例如操作同一张表,数据库为每一个原创 2020-10-20 14:44:42 · 206 阅读 · 0 评论 -
MySQL批量将表名或者列名大小写转换
批量操作表名大小写转换SELECTconcat( 'alter table ', TABLE_NAME, ’ rename to ', LOWER( TABLE_NAME ), ‘;’ ) AS ‘修改脚本’FROMinformation_schema.TABLESWHERETABLE_SCHEMA = '‘数据库名(替换即可)’执行结果将执行结果中的SQL语句复制出来,执行即可完成批量表名大小写操作批量操作数据库所有表列表名(备注:下面SQL仅仅生成修改数据库所有列名的SQ原创 2020-07-30 10:32:08 · 2526 阅读 · 0 评论 -
MySQL中SQL的执行顺序
MYSQL中SQL的执行顺序:(1)、from(2)、on(3)、join(4)、where(5)、group by(6)、avg,sum(7)、having(8)、select(9)、distinct(10)、order by(11)、limitMySQL中where条件后的执行顺序:从左到右。right join和 left join语句中on和where条件的区别?(1)、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会.原创 2020-07-06 16:23:37 · 239 阅读 · 0 评论 -
Mysql中SQL执行计划explain解读
explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。explain主要用于分析查询语句或表结构的性能瓶颈。explain+sql,通过执行explain可以获得sql语句执行的相关信息。下面我们就来逐一分析explain+sql得到的相关信息1、id它是一组数字,所表示的信息是select 语句操作表的顺序...原创 2019-11-28 14:02:41 · 261 阅读 · 0 评论 -
Mysql索引原理(B+树)
首先我们来明确一下索引的定义:索引是帮助MySQL高效获取数据的排好序的数据结构。索引一般分为四大类:FULLTEXT:全文索引NORMAL:普通索引SPATIAL :组合索引UNIQUE :唯一索引(主键索引也是唯一索引的一种)既然索引是数据结构,那么他究竟采用的是什么数据结构啦。一般MySQL采用的Hash,B+tree两种数据结构,一般使用B+Tree的索引占...原创 2019-11-26 15:31:23 · 199 阅读 · 1 评论 -
Mysql深度分页详解
在做查询的时候经常做分页,然后随着数据库数据量增大,页数增多(即偏移量的增加),查询速度页成指数下降SQL:select * from student where sno>1200 and ssex='f' ORDER BY s_id ASC LIMIT 100,50简单说就是后面的分页参数LIMIT 100,50,LIMIT 10000,50,LIMIT 100000,...原创 2019-11-21 11:25:48 · 5443 阅读 · 2 评论 -
MYSQL中字符串char与varchar的区别
MYSQL中char和varchar都是字符串类型,但是他们的存储和检索的方式不一样。char 是定长的字符串,varchar是不定长的字符串。char类型长度是(0-255)之间,在当某个字段被定义成char类,并指定长度,其长度就不在变化,...原创 2018-06-26 23:05:38 · 976 阅读 · 0 评论 -
MySQL的数据类型
MySQL是一个真正多用户,多线程的SQL数据库服务器。MySQL是以一个客服机/服务器结构的实现。它由一个拂去其守护程序mysqld和很多不同的客户程序和库组成。数据库是一个服务于一个核心目标的数据的有组织的集合。数据库中存储的数据采用一种不变的方式呗存储、格式化、存取以及显示。RDBMS(关系数据库管理系统)1、 数据基础项是关系2、 在这些表上的操作知识产生关系一个关系表必须符合某些特定的条...原创 2018-07-13 14:22:21 · 205 阅读 · 0 评论 -
如何选择mysql的存储引擎
如何选择mysql的存储引擎在开发过程中,我们经常使用的存储引擎MyISAM / INNODB /MemoryMyISAM存储引擎:如果表对事物的要求不高,同时是以查询和添加为主,我们考虑使用MyISAM存储引擎,比如bbs中的发帖表,回复表。 INNODB存储引擎:对事物要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表。MyISAM和INNODB的区别M...原创 2018-07-15 13:02:46 · 630 阅读 · 1 评论 -
多线程实现一分钟插入1000万条数据
首先我们需要建立一个线程类,继承Thread类,并实现run方法 1、获取数据库连接 2、编写插入的sql语句 3、关闭自动提交 conn.setAutoCommit(false); 4、编写for循环,跟着那个的插入方法一样。 5、将注入的信息,一条条添加到pst中。pst.addBatch();//批量添加信息 6、在for循环结束的地方...原创 2018-08-14 22:11:55 · 21046 阅读 · 2 评论 -
实现按任意的时间统计数据
在进行报表开发的过程中,我们经常会遇到要根据不同的时段进行统计。有的是按年,月,周,日,时,这些都比较容易实现,使用to_char函数将日期转换成对应的格式即可。如下所示按日统计。to_char( h.row_date, 'yyyy-MM-dd' ) AS row_date2GROUP BY to_char( h.row_date, 'yyyy-MM-dd' )只要对数据...原创 2018-09-30 16:54:53 · 3227 阅读 · 2 评论 -
SQL的优化方法
SQL的优化方法主要包含两大类1、表的优化,2、语句的优化 1.1、纯数字的的字段尽量存储为整型,在排序或比较大小时,相对字符串有很大的速度优势 1.2、在根据需求设计表的时候,可以先具体的去了解每一个功能需求。将一些后续可能要用要到统计,在插入时就实现。而不用在查询时使用函数去计算。 1.3、在存储时间时,尽量保存为时间戳格式,另外同时存储一个对应的数值类型的字...原创 2018-12-07 18:05:35 · 136 阅读 · 0 评论 -
快速实现大量数据匹配来电号码归属
问题分析手机号码又主要分两种,018179700104和18179700104,即带0开头和不带0开头的。邮编又分两种三位数的邮编和四位的邮编,如北京010,深圳0755.结果一个来电号码要判断是否满足四种情况中的一种。Left join的haul就会产生巨大的数据量匹配,导致非常的缓慢。:由于数据库数据量大,且来电归属地的表数据量庞大,还需要同时匹配手机号码和邮编。首先我们来...原创 2018-12-11 12:00:44 · 1813 阅读 · 0 评论 -
postgresql中实现按周统计详解
在做报表这种,我们经常会遇到各种各样的需求,按周统计就是一种。刚啊看到这个需求可能会一脸懵逼,不知如何下手。甚至有的人会利用最原始的方法,将客户所选日期拆分成N周,每一周都获取一下周一和周天时间,然后每周查询一次。这样的haul执行效率非常的低下,那有没有更好的方法实现啦,肯定是有的,这个时候我们就要了解一下数据库自带的函数。SELECT EXTRACT(DOW FROM CURRENT_D...原创 2019-01-11 13:49:54 · 10481 阅读 · 5 评论 -
java8编写的日期工具类
基于java8的时间类编写的一些常用的时间工具方法:1、获取指定日期对应的周一和周日的时间2、获取两个指定日期之间的差值3、获取指定日期对应月份的天数4、获取指定日期对应年份的天数5、获取指定时间对应的秒值6、获取指定时间对应的毫秒值package com.hock.synctest;import java.time.DayOfWeek;import java.t...原创 2019-01-22 19:36:44 · 305 阅读 · 0 评论 -
postgresql实现存在则更新,不存在则插入
话不多说直接上sqlinsert into student values(4,'d') on conflict(id) do update set name='as';以上就是实现如果id存在冲突时,则更新name字段。不存在冲突时就插入的SQL语句。不过大家很可以能回遇到下列问题ERROR: there is no unique or exclusion constraint...原创 2019-04-23 10:49:27 · 7556 阅读 · 0 评论 -
浅谈Spring事物管理,实现百万数据插入MySQL数据库30秒内
事物的定义:用于保证数据的完整性和一致性的事件事物的四大特性:ACID, 原子性(Atomicity), 一致性(Consistency), 隔离性(Isolation), 持久性(Durability)原子性(Atomicity)事务是一个原子操作,不可以拆分。事务的原子性确保动作要么全部完成,要么完全不起作用一致性(Consistency一旦事务完成(不管成功还是失败)...原创 2019-05-07 15:16:04 · 2036 阅读 · 0 评论 -
索引失效的情况
索引失效的情况:单列索引存储NULL值时,符合索引全部为null时 like查询以%开头 字符型字段为数字时在where条件里不添加引号. MySQL估计全表扫描比使用索引更快时。 条件中存在OR时。 使用了is null判断 在用组合索引时,没有使用组合索引的第一个字段 查询条件使用函数在索引列上,或者对索引列进行运算 mysql使用不等于(!= 或者<>)的...原创 2019-06-26 21:10:33 · 120 阅读 · 0 评论 -
Springboot+mysql+mybatis+druid+redis实现数据库缓存实战
首先我们需要引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> ...原创 2019-07-02 19:06:07 · 1271 阅读 · 0 评论 -
mybaits注解开发动态sql异常:Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 758; 元素内容必须由格式
报错信息:Could not find value method on SQL annotation. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 2; columnNu...原创 2019-08-08 18:17:16 · 4053 阅读 · 1 评论 -
数据库去重和查询指定记录区间数据
PostgreSQL数据库的去重与查询制定区间的记录数1、查询前N条记录数在PostgreSQL数据库数据库中有一个limit函数用来查询前多少条SELECT * from ag_actv LIMIT 1050我们得到是 ag_actv 表中的1050行记录2、查询指定区间的记录数(如1000-1050)顺着这个思路的话我们就可得到指定区间的记录数,比如我们要查询1000到1050条之间的50...原创 2018-06-24 11:03:36 · 4356 阅读 · 0 评论