
数据库技能
文章平均质量分 86
以实战为线索,逐步深入数据库性能优化的各个环节,掌握常用性能优化思路,提升编码能力和思维能力。
SQL 层面:SQL 的生命周期、权限管理、底层的排序原理、连表原理。
存储引擎层面: InnoDB 存储引擎的底层架构、索引的算法、事务的原理、锁机制、隔离机制、幻读。
java、iOS、Vue
华为云云享专家认证|阿里云开发社区博客专家,定期分享Java、iOS资讯(包括基础知识储备)、小程序开发与运营、阅读与写作。只为你呈现有价值的信息,专注于移动端技术研究领域。
展开
-
在 MyBatis 中使用 Map 类型属性作为查询条件的步骤和示例。
首先,在 Mapper 接口中定义一个方法,该方法将接收一个 Map 类型的参数。原创 2025-03-08 11:48:35 · 73 阅读 · 0 评论 -
【OA角色数据权限】自定数据权限(自定义部门)、本部门数据权限、本部门及以下数据权限、仅本人数据权限
2. 采用部门祖先列表ancestors字段(不包含自己),则查询本机以及下级部门的代码如下。部门表采用部门路径反应祖先层级关系(包含自己部门的ID)原创 2025-03-08 11:25:28 · 64 阅读 · 0 评论 -
sqlserver中的锁模式 | SQL SERVER如何开启MVCC(使用row-versioning)【启用行版本控制减少锁争用】
当执行UPDATE操作时,SQL Server首先会对要更新的数据行加上。原创 2025-03-06 16:57:42 · 541 阅读 · 0 评论 -
提高频繁更新操作的性能策略
通过优化表设计、索引、更新语句、事务和硬件配置,可以显著提高 SQL Server 频繁更新操作的性能。如果某些查询只涉及部分数据,可以创建过滤索引(Filtered Index),减少索引维护的开销。根据实际场景选择合适的优化策略,确保系统在高并发和大数据量下仍能高效运行。对于频繁更新的小表,可以使用内存优化表(In-Memory OLTP)。确保统计信息是最新的,以便查询优化器生成高效的执行计划。分析查询的执行计划,检查是否有全表扫描或索引缺失。语句,减少多次操作的开销。原创 2025-03-06 14:47:40 · 118 阅读 · 0 评论 -
后台管理系统:参数配置表设计 | 参数管理页面开发
作用范围,server:服务端,client:客户端。原创 2025-02-27 14:54:12 · 49 阅读 · 0 评论 -
OA岗位信息表设计 | 字段唯一性校验
【代码】OA岗位信息表设计。原创 2025-02-25 10:03:10 · 44 阅读 · 0 评论 -
mysql数据迁移到SQLserver: 构建数据迁移脚本
case when ctype = '小船' then '小船' when ctype = '大船' then '大船' else '大船' end原创 2025-02-24 16:37:08 · 644 阅读 · 0 评论 -
已解决SQLServer 删除/修改字段类型时,因为默认值约束报错: The object ‘DF__xxxx__xx‘ is dependent on column ‘xxx‘.
因为当前字段含有默认值。原创 2025-02-24 15:11:00 · 888 阅读 · 0 评论 -
Spring Boot 多数据源启动器 dynamic-datasource 集成Druid: MyBatis-Plus 的多数据源扩展插件,提供对 Druid连接池的快速集成。
优点 :大量的通用的数据聚合,事务,数据源切换都由中间件来处理。原创 2025-02-17 11:46:06 · 1198 阅读 · 0 评论 -
OA(office automation)工作流表结构设计:审批记录和表单数据 | 工作流-处理模式
【代码】【工作流表结构设计】审批记录和表单数据。原创 2025-02-11 08:08:34 · 148 阅读 · 0 评论 -
Flowable数据表详细说明
字段类型主键说明备注ID_Y主键REV_INTEGERN数据版本号CATEGORY_N流程定义分类读取xml文件中程的targetNamespace值NAME_N流程定义的名称读取流程文件中process元素的name属性KEY_N流程定义key读取流程文件中process元素的id属性VERSION_INTEGERN版本N部署ID流程定义对应的部署数据IDNbpmn文件名称一般为流程文件的相对路径N流程定义对应的流程图资源名称N。原创 2025-01-23 09:34:17 · 38 阅读 · 0 评论 -
MySQL 数据库 :ORM (Object-Relational Mapping,对象关系映射)规约 【sql.xml 配置参数使用#{},#param# 防止SQL 注入】
事务会影响数据库的 QPS,另外使用事务的地方需要考虑各方面的回滚方案,包括缓存回滚、搜索引擎回滚、消息补偿、统计修正等。查询字段必须明确写明。原创 2025-01-16 15:01:48 · 35 阅读 · 0 评论 -
MySQL 数据库 :SQL 语句规约(不得使用外键与级联,一切外键概念必须在应用层解决。)
UTF-8是使用1~4个字节,一种变长的编码格式,字符编码。说明:对多表进行查询记录、更新记录、删除记录时,如果对操作列没有限定表的别名(或表名),并且操作列在多个表中存在时,就会抛异常。1)别名可以是表的简称,或者是依照表在 SQL 语句中出现的顺序,以 t1、t2、t3 的方式命名。(特别是删除或修改记录操作)时,要先 select,避免出现误删除的情况,确认无误才能执行更新语句。对于数据库中表记录的查询和变更,只要涉及多个表,都需要在列名前加表的别名(或表名)进行限定。原创 2025-01-16 11:53:41 · 342 阅读 · 0 评论 -
【交易流水查询】: 查流水列表(根据交易时间降序)、流水导出(根据id降序,记录上次返回的主键,在下次查询时使用主键过滤)、计算合计 (不排序)
避免数据量大时扫描过多的记录的思路: 记录上次返回的主键,在下次查询时使用主键过滤。交易流水查询条件 queryType。原创 2025-01-14 16:46:58 · 316 阅读 · 0 评论 -
MySQL 数据库 :区分度(散列性/选择性) 的计算公式、索引规约、利用延迟关联或者子查询优化超多分页场景、 基于键集分页方法,处理时间分页数据重复的问题、高效率地导出大量数据的流水数据报表
索引物理文件全扫描,速度非常慢,这个 index 级别比较 range 还低,与全表扫描是小巫见大巫。至少要达到 range 级别,要求是 ref 级别,如果可以是 const 最好。说明:存在非等号和等号混合判断条件时,在建索引时,请把等号条件的列前置。那么即使c 的区分度更高,也必须把 d 放在索引的最前列,即建立组合索引。防止因字段类型不同造成的隐式转换,导致索引失效。,a 列的几乎接近于唯一值,那么只需要单建。反例: explain 表的结果,原创 2025-01-14 11:11:42 · 328 阅读 · 0 评论 -
MySQL 数据库 : 建表规约
注意:POJO 类中的任何布尔类型的变量,都不要加 is 前缀,所以,需要在设置从 is_xxx 到 Xxx 的映射关系。数据库表示是与否的值,使用 tinyint 类型,坚持 is_xxx 的命名方式是为了明确其取值含义与取值范围。因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免节外生枝。说明:表名应该仅仅表示表里面的实体内容,不应该表示实体数量,对应于 DO 类名也是单数形式,符合表达习惯。正例:表达逻辑删除的字段名 is_deleted,1 表示删除,0 表示未删除。原创 2025-01-14 09:52:25 · 147 阅读 · 0 评论 -
mybatis分页插件:PageHelper、mybatis-plus-jsqlparser(解决SQL_SERVER2005连接分页查询OFFSET问题)
于 mybatis-plus-v3.5.9 起,PaginationInnerInterceptor 已分离出来。如需使用,则需单独引入 mybatis-plus-jsqlparser 依赖。pring boot3 引入可选模块。原创 2025-01-11 11:43:25 · 502 阅读 · 0 评论 -
sys.dm_exec_connections:查询与 SQL Server 实例建立的连接有关的信息以及每个连接的详细信息(客户端ip)
需要对服务器具有 VIEW SERVER STATE 权限。原创 2025-01-08 11:06:34 · 731 阅读 · 0 评论 -
【DataGrip 数据库连接客户端】
打开应用程序,点击试用模式启动软件,然后将“jetbrains-agent-latest”拖到任意位置,然后拖入,弹出对话框,点击“Restart”重启datagrip,在弹出的JetbrainsAgent 配置助手对话框中,选择“Actxx code”,点击“为DataGrip安装jetbrains-agent”;解决方案:修改sql server 数据库的排序规则Chinese_PRC_CI_AS(字符集+排序)resources_zh_CN_DataGrip_2019.3_r1.jar 复制到。原创 2024-12-18 11:12:50 · 98 阅读 · 0 评论 -
MyBatis-Plus动态表名组件DynamicTableNameInnerInterceptor实现分表查询(按年分表和按月分表)【自定义分表拦截器,即月份动态表名处理器实现动态表名切换】
mybatis-plus动态分表策略与查询(按年分表和按月分表):java配置类统一配置动态表名插件。根据条件获取单条记录,查询最近几个月的数据,monthCount传0默认从当前月递归到去年1月份。获取相邻两个月符合条件的交易返回 list 不支持翻页, 比如交班明细。单个查询和跨表list查询。原创 2024-12-06 14:16:12 · 425 阅读 · 0 评论 -
永久停用PostgreSQL 归档功能
在使用 PostgreSQL 的过程中,如果 PostgreSQL 数据库开启了归档(archive_mode=on),可能会产生很多归档文件如果数据归档文件过多,就需要进行清理。在一些实时数据交互比较频繁的服务器上,产生的会更多,占用了磁盘空间,影响到数据库服务的正常运行。在 PostgreSQL 中,WAL(Write-Ahead Logging)归档不是必须开启的功能,但在 production 环境中,开启归档通常是一个很好的实践,尤其是对于数据持久性和灾难恢复具有高要求的系统。原创 2024-11-29 11:53:41 · 490 阅读 · 1 评论 -
管理员的船舶在线率统计机制和普通用户的统计机制针对性地做了区别处理:设备统计数据和设备明细是否一起查询返回。
判断一个map中是否存在这个分类key,如果存在则处理value的数据(当前处理对象的总数+累计总数),如果不存在,则创建一个满足value要求的数据结构放到value中。管理员的在线率统计是定时的,反应的是某个时刻下的状态,统计数据和设备实时状态存在小概率滞后,是避不开的。管理员的设备统计数据和设备明细是分开查询的,统计数据和设备明细不是一个时刻的数据,如果刷新统计页面,再展开设备明细也是存在极小的概率状态不一致。普通用户的设备明细和设备统计数据是查询同一时刻数据,一起返回的,在线状态100%一致。原创 2024-11-29 10:22:08 · 43 阅读 · 0 评论 -
Java MyBatis实战之QueryWrapper中and和or拼接技巧: 根据用户权限查询船舶设备
QueryWrapper是MyBatis提供的一个用于构建查询条件的类,它可以方便地实现各种复杂的查询条件组合。QueryWrapper提供了丰富的方法,如eq(等于)、ne(不等于)、like(模糊查询)、between(区间查询)等,可以满足各种查询需求。同时,QueryWrapper还支持and和or两种逻辑运算符,可以帮助轻松实现多条件组合查询。原创 2024-11-20 11:06:54 · 487 阅读 · 0 评论 -
mybatis-plus代码生成器:主键生成策略配置
背景:为了提升开发效率,利用mybatisplus API读取数据库表结构生成对应的实体entity、服务service,通过模板生成映射mapper。原创 2024-11-13 14:39:58 · 128 阅读 · 0 评论 -
船舶终端设备维修服务设计
设备基础表:九位码,北斗号,设备型号,设备编号,销售类型,船号,船舶设备号。唯一性判断依据:设备编号,SYS-20241011,XX-20241101。维修操作流程: 仓库收件→售后负责人→维修部门→质检部门→发货。设备状态:分配维修、已维修、 合格、不合格、报废、待寄出、寄出。涉及的操作对象: 报修单、维修单、发货单、设备档案。涉及的角色:保修员,售后员、维修员、质检员。logistics_no 物流单号。涉及的操作: 维修、质检、发货。device_no 设备编号。原创 2024-11-07 11:00:08 · 58 阅读 · 0 评论 -
基于elasticsearch存储船舶历史轨迹: 使用scroll滚动技术实现大数据量搜索
通过POST请求往Elasticsearch批量插入文档数据(API 响应常用选项filter_path参数指定响应我们想要响应的字段)实现:每天创建索引,使用POST请求往Elasticsearch批量插入文档数据。添加filter_path Query 参数,批量插入文档只响应errors字段。原创 2024-09-28 15:46:20 · 440 阅读 · 0 评论 -
基于报位时间判断船舶设备是否在线,基于心跳时间判断基站网络是否在线
假定2个小时之内有报位的数据认为在线。原创 2024-09-23 16:08:14 · 188 阅读 · 0 评论 -
监视SQL Server 内存使用量
如果内存在等待超过 20 分钟后不可用,则 SQL Server 将终止查询,出现错误 8645“等待内存资源在资源池”default“中执行查询时出现超时。最初,查询会请求该执行内存,如果授予此内存,查询将使用内存的全部或部分内存来对结果或哈希存储桶进行排序。在查询执行期间分配的此内存称为内存授予。例如,如果查询执行对内存中非常大的行集执行排序操作,则排序可能需要几秒钟或几分钟时间,并且授予的内存用于查询的生存期。查询执行内存(QE 内存): 此术语用于突出显示在执行查询期间使用排序或哈希内存的事实。原创 2024-09-03 14:30:47 · 637 阅读 · 0 评论 -
排查SQL Server中的内存不足及其他疑难问题
以下示例输出显示,22 个请求使用大约 900 MB 的查询执行内存,3 个请求正在等待。这发生在默认池(pool_id = 2)和常规查询信号灯(resource_semaphore_id = 0) 中。可以使用 sys.dm_os_memory_clerks 或 DBCC MEMORYSTATUS 来观察SQL Server内的总体内存使用情况。此 DMV 按资源池(内部、默认和用户创建)和 resource_semaphore (常规和小型查询请求)细分查询预留内存。具有内存授予的查询示例。原创 2024-09-03 10:35:51 · 707 阅读 · 0 评论 -
数据库小技能:跨服务器的数据迁移(导出)
背景:旧平台数据迁移到新平台数据库。原创 2024-08-01 13:41:11 · 184 阅读 · 0 评论 -
GeoServer GIS 服务器(geoServer离线地图服务器搭建)
tomcat是支持war包部署的,将下载的zip文件解压,把geoserver.war包拿出来扔到comcat --> webapps下,启动tomcat服务即可,由于我前面把tomcat端口修改为60005,访问时在浏览器输入。不利于存储,比较占内存。该组织发布了一个坐标参照系统的数据集,并维护坐标参照系统的数据集参数,以及坐标转换描述,数据集对全球收录到的坐标参照系统进行了编码。点击工作区,点击添加新的工作区填写工作区名称,命名空间url地址,这个地址在地图发布后可以调用不同的图层,一定要填写。原创 2024-07-27 17:23:26 · 548 阅读 · 0 评论 -
通过POST请求往Elasticsearch批量插入文档数据(API 响应常用选项filter_path参数指定响应我们想要响应的字段)
需求: 向Elasticsearch中的’test_index’索引批量插入文档。Body 参数text/plain,批量插入AP必须以换行结尾。批量插入API,如果没有以换行结尾报错。情况认证: Basic Auth。调试工具:Apifox。原创 2024-07-23 16:42:32 · 867 阅读 · 1 评论 -
数据库存 IP 地址,用什么数据类型比较好?
存储空间:4 字节的 INT 类型 15 字节的 VARCHAR(15) 更加节省存储空间。另外,VARCHAR 除了会保存需要的字符数,还会另加一个字节来记录长度(如果列声明的长度超过 255,则使用两个字节记录长度),所以 VARCHAR(15) 其实要占用 16 个字节。在定义表时,可以在数据类型后面添加关键字 UNSIGNED 来定义无符号整数,否则默认为有符号整数。检索速度:如果要在 IP 地址上建立索引,那么对于字符串索引来说,速度较慢。inet_aton 和 inet_ntoa。原创 2024-07-18 08:50:27 · 968 阅读 · 0 评论 -
数据库客户端自定义驱动和数据源:以 HighGo-瀚高为例子
url:jdbc:highgo://IP地址:端口号/数据库名?metaFromSQL=1&schemaOwner=模式名&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT8&useSSL=false。原创 2024-07-12 16:24:00 · 835 阅读 · 0 评论 -
提升船舶轨迹查询效率
按天存储轨迹数据,本文是一个月存储在6在表中,即:01,06,11,16,21,26。新增decimal类型的日期字段用于查询。获取两个日期之间的所有日期 字符串。应用配置文件添加配置选项。根据船号和日期进行查询。需求: 查询船舶轨迹。原创 2024-07-03 09:39:07 · 116 阅读 · 0 评论 -
mybatis mapper.xml 比较运算符(大于|小于|等于)的写法: 转义和<![CDATA[]]>
CDATA[ 内容 ]]> 中的内容 部分,不能再包含 ,也不能嵌套使用。[CDATA[]]> 是一个整体,处理放置内容文本的部分之外,不能出现 空格 或者 换行。个人比较喜欢使用 ,因为我记不住那个转义的意思。这种格式时,会把方块中的内容直接输出,不做任何的解析转义。背景:在 *.xml 中使用常规的。会与xml的语法存在冲突。【MarkDown】小知识。在 xml 格式中,当遇到。应用场景:查询时间范围。原创 2024-07-03 08:32:57 · 1303 阅读 · 0 评论 -
SQL Server 拆分逗号分隔的字段为多条数据
Expression1是要到expression2中寻找的字符,start_location是CHARINDEX函数开始在expression2中找expression1的位置。需求:将TargetEquipmentModelIds 逗号分隔的字段拆分为多条数据equipment_model_id。字符数据的表达式character_expression 可以是常量、变量,也可以是字段或二进制字段。拆分逗号分隔的字段为多条数据的应用场景: 数据处理,根据用户名数组查询用户id,进行权限配置。原创 2024-05-31 14:27:33 · 4303 阅读 · 0 评论 -
mybatis-plus使用apply 方法用于复杂 SQL 构造的场景: apply 拼接数据权限语句、 in SQL,来查询从表某个范围内的数据 | 多条件 or()的使用
需求: wrapper自定义sql: 使用条件构造器作为参数。1. mapper.java/Service.java定义接口方法。从源码可以看出第二参数params 无法使用字符串。正确的实现方式如下:直接在applySql拼接完整。如果params使用数组只会获取第一个元素。,否则如果有字段重名就无法明确使用哪一个。子查询例子: 查询租户对应的仓库ID数据。条件构造器作为参数都需要。如果是主表条件可以使用。原创 2024-05-25 14:16:43 · 914 阅读 · 0 评论 -
JDBC数据库连接配置
url:jdbc:gbasedbt-sqli://IP地址:端口号/数据库名:GBASEDBTSERVER=gbasedbt-server;url:jdbc:sqlite:/path/db-file-name (MAC以及Linux) jdbc:sqlite://path/db-file-name (Windows)原创 2024-05-23 08:50:18 · 262 阅读 · 0 评论 -
mybatisPlus插入或者更新数据的时候,为一些字段指定默认值。| mybatis-plus-generator 3.5.6 禁用 Controller 层生成
实现metaObjecthandler接口,重写insertFill、updateFill方法;每次执行插入和修改操作时,会执行insertFill,updateFill方法;实体的公共字段使用@TableField注解:表示此字段只在插入/新增操作时更新数据:表示此字段在修改和新增操作时都更新数据;:表示此字段只在修改操作时都更新数据;原创 2024-05-21 14:23:32 · 1768 阅读 · 0 评论