数据库
文章平均质量分 83
数据库相关笔记
AQin1012
少年有他的山海
展开
-
【Redis】深入理解 Redis 常用数据类型源码及底层实现(2.版本区别+dictEntry & redisObject详解)
在关于这些底层数据结构是如何构成我们熟悉的Set、Sorted Set 、List、Hash……的Redis和7并不完全一致,我们来看看两个版本之间的区别。原创 2023-12-26 10:02:52 · 1794 阅读 · 6 评论 -
【填坑向】MySQL常见报错及处理系列(Navicat:2002 - Can‘t connect to MySQL server on ‘127.0.0.1‘ & 获取配置文件my.cnf路径)
由于不同版本的MySQL可能默认的配置文件位置不同,并且有些版本的MySQL在安装时并不会自动创建my.cnf文件,需要用户手动创建。上面命令返回的路径+--verbose --help |grep -A 1 'Default options',然后回车后显示的就是my.cnf的路径。上面红框框内的就是读取配置文件my.cnf的路径的顺序(MySQL在启动时将按照列出的顺序读取这些文件中的配置,即优先级从左到右依次降低)可以尝试右键选择“高级”,勾选“使用套接字文件”原创 2023-08-24 13:37:04 · 1379 阅读 · 0 评论 -
【填坑向】MySQL常见报错及处理系列(Communications link failure & Access denied for user ‘root‘@‘localhost‘)
翻一下大致的意思就是默认会按照如下的顺序读取配置文件,我上面贴出的配置文件就是第一个/etc/my.cnf,但显然目前在运行的MySQL并不是使用的这个配置文件,保险起见,我依次查看了列出的所有位置的my.cnf,看是否存在,存在的话内容是什么,于是发现/usr/local/etc/my.cnf也存在,并且未配置端口信息,我在该位置的my.cnf中添加了端口配置(port = 3306)并重启后,再次执行lsof -i:3306。执行brew services list可以看到MySQL是启动成功了的。原创 2023-08-24 14:12:02 · 477 阅读 · 0 评论 -
【填坑向】MySQL常见报错及处理系列(ERROR! The server quit without updating PID file)
MySQL 数据文件通常位于 /usr/local/var/mysql 目录中,可以使用sudo rm -rf /usr/local/var/mysql进行删除;如果只有这意味着只有 grep mysql 这一个进程与mysql相关,即MySQL 服务器当前并没有在运行,说明 MySQL 服务器已经停止了,无需再手动删除。删除 MySQL 安装文件和数据文件,MySQL 的默认安装位置是/usr/local/mysql,可以使用sudo rm -rf /usr/local/mysql删除它。原创 2023-08-22 15:18:55 · 932 阅读 · 1 评论 -
【MySQL】记录锁?间隙锁?临键锁?到底锁了些什么?这一篇帮你捋清楚( ̄∇ ̄)/
LOCK_MODE列中为X,即加了临键锁,锁住的范围是LOCK_DATA中的行数据以及其前间隙(左开右闭)LOCK_MODE列中为X,REC_NOT_GAP,锁住的是LOCK_DATA中的行数据LOCK_MODE列中为X,GAP,锁住的是LOCK_DATA中的行数据前面的间隙(左开右开)原创 2023-04-15 22:09:16 · 250768 阅读 · 56 评论 -
【MySQL】MySQL索引优化——从原理分析到实践对比
嵌套循环连接算法 Nested-Loop Join(NLJ)使用索引字段进行关联的关联查询一般会使用NLJ简单理解就是拿一张表(驱动表)中的所有数据,一次一次的去另一张表(被驱动表)中查找对应行,最后取出两张表的结果合集把b表中读取一行数据(b表有过滤条件会从过滤后的结果中读取)取出关联字段(id)去a表中查找较取出a表中满足条件的行,和b表中获取到的结果合并,返回重复上面👆3个步骤基于块的嵌套循环连接算法 Block Nested Loop Join(BNL)使用非索引字段。原创 2023-03-30 16:57:30 · 249708 阅读 · 19 评论 -
【MySQL】了解MySQL的Explain,读这一篇够了( ̄∇ ̄)/
EXPLAIN提供MySQL如何执行语句的信息,举个例子就是在你要执行的查询语句前加一个EXPLAIN,就可以查看执行当前语句的具体信息,比如属于什么查询类型啦~走了什么索引啦(具体如下图)~我们在碰到一些类型“慢查询”问题时,一般会使用EXPLAIN来分析我们的SQL还有哪些地方可以做优化,具体就是根据上图中列表字段进行分析的,本篇就把EXPLAIN的关键字段挖个地儿朝天,👩再也不用担心要如何对SQL进行优化叻( ̄∇ ̄)/原创 2023-03-27 14:47:03 · 248156 阅读 · 16 评论 -
【实测版】联合索引,最左匹配原则,走?不走?
联合索引的各个字段可以不按顺序出现(原因是WHERE后面字段的顺序会被优化器优化为符合最左前缀的顺序),但是第一个字段必须出现,否则不走索引(最左前缀匹配,即WHERE条件必须有联合索引的第一个字段,以最左边的为起点任何连续的索引都能匹配上),当SELECT后需要查询的字段被联合索引覆盖,也会走索引,但方式是进行全索引扫描,效率并不高。原创 2023-03-24 15:01:44 · 241146 阅读 · 3 评论 -
【保姆级】Shp文件入库
shp2pgsql.exe首先,你需要一台安装好了PostgreSQL数据库的电脑(没安的话安装过程自行百度哈...)然后找到shp2pgsql.exe,一般在PostgreSQL下面的bin目录,也就是这个位置:或者建议直接全局搜索,windows自带的搜索工具太慢,顺便推荐下Everything(超级快,看我用Everything自己搜自己==):附下载地址:voidtoolshttps://www.voidtools.com/zh-cn原创 2021-12-30 16:29:11 · 1250 阅读 · 0 评论 -
PostgreSQL中的索引
含义索引是一个单独的、存储在磁盘上的数据结构,用于对数据库中一行或多行的值进行排序,用于快速找出在某个列中某一特定值的行。分类B-treeCREATE INDEX index_name ON table_name USING BTREE(column);HashCREATE INDEX index_name ON table_name USING hash(column);GiST不是单独的一种索引类型,而是一种架构,可以在这种架构上实现很多不同的索引策略。GIN..原创 2021-10-03 16:59:14 · 651 阅读 · 0 评论 -
解决Java连接PostgreSQL中数组类型(Array)的传参问题
、、之前困扰于Java连接PostgreSQL时数组类型的参数的入库问题,从Java的枚举类JdbcType可以看出跟数组有关的只有 "ARRAY(2003)" 这个类型但是经尝试,PostgreSQL中并没有可以对应的类型会报"No typehandler found for property xxx"的错Caused by: java.lang.IllegalStateException: No typehandler found for property testArr参考.原创 2021-09-22 20:41:21 · 234280 阅读 · 5 评论 -
涉及数组(Array)嵌套查询
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.aqin.dao.mapper1.TrmmIndexMapper"> <resultMap id="BaseResu.原创 2021-09-23 19:11:47 · 598 阅读 · 0 评论 -
在 sql 中使用正则表达式
新建测试表:-- Table: public.table01-- DROP TABLE public.table01;CREATE TABLE IF NOT EXISTS public.table01( id bigint NOT NULL, name character varying COLLATE pg_catalog."default" NOT NULL, age integer, CONSTRAINT table01_pkey PRIMARY KEY原创 2021-10-01 21:07:39 · 228446 阅读 · 2 评论