mysql数据库 ,java 代码巧妙结合提升系统性能。
查询频繁的表t_yh_transport_task
- 保证数据量最少,增加查询效率,
- 常用于查询的字段增加索引,
- 每日定时移动数据
<!-- 医院系统预约任务历史删除定时器 -->
<bean name="delHosTaskTimer" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.yh.utils.timer.DelHosTaskTimer" />
</bean>
<!-- 定时任务触发器 -->
<bean id="delHosTaskTimerTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="delHosTaskTimer" />
<!-- <property name="cronExpression" value="0 0 1 * * ?" /> --><!--每天1点运行一次 -->
<property name="cronExpression" value="0 */1 * * * ?" /><!--每1分钟运行一次 -->
</bean> - public class DelHosTaskTimer extends QuartzJobBean{具体业务逻辑}
- 或者:mysql中写
一个存储过程,每日定时移动数据。 - 存储过程:
BEGIN
DECLARE
counts INTEGER;-- 记录迁移条数
-- DECLARE
-- '2018-07-01' datetime;-- 定义一个时间变量用来存放时间
DECLARE
result_code INTEGER;-- 定义返回结果并赋初始值
DECLARE
CONTINUE HANDLER FOR SQLEXCEPTION
SET result_code = 1;-- 在执行过程中出现任何异常result_code为1
-- SELECT
-- '2018-07-01' INTO '2018-07-01';-- 获取今日零点三个月之前的时间
SELECT
count(1) INTO counts
FROM
(
SELECT
t.*
FROM
t_yh_transport_task t
WHERE
t.task_type = 1
AND t.`create_time` <= '2018-07-01'
UNION
SELECT
t.*
FROM
t_yh_transport_task t
LEFT JOIN t_yh_ordertask_extend e ON e.transport_task_id = t.transport_task_id
WHERE
t.task_type = 2
AND e.`order_time` <= '2018-07-01'
) a;
-- WHERE
-- a.task_status = '33'
-- OR a.task_status = '99';START TRANSACTION;
-- 进行事物处理
-- 向历史表插入历史数据
INSERT INTO t_yh_transport_task_history SELECT
NULL,
a.transport_task_id,
a.user_id,
a.create_time,
a.task_Ftype,
a.task_Ctype,
a.task_content,
a.task_org,
a.transport_tool,
a.task_Departure,
a.task_Destination,
a.task_status,
a.task_startTime,
a.task_endTime,
a.exc_user_id,
a.task_detail,
a.affiliated_hospital,
a.owned_property,
a.task_type,
a.cancel_reason,
a.parent_task_id,
a.destination_org,
a.task_code,
a.task_from,
a.is_lock,
now(),
a.change_tool_time,
a.end_reason,
a.update_time,
a.plan_no,
a.wandaihao
FROM
(
SELECT
t.*
FROM
t_yh_transport_task t
WHERE
t.task_type = 1
AND t.`create_time` <= '2018-07-01'
UNION
SELECT
t.*
FROM
t_yh_transport_task t
LEFT JOIN t_yh_ordertask_extend e ON e.transport_task_id = t.transport_task_id
WHERE
t.task_type = 2
AND e.`order_time` <= '2018-07-01'
) a;
-- WHERE
-- a.task_status = '33'
-- OR a.task_status = '99';-- 插入后删除三个月前的数据
DELETE
FROM
t_yh_transport_task
WHERE
t_yh_transport_task.transport_task_id IN (
SELECT
a.transport_task_id
FROM
(
SELECT
t.*
FROM
t_yh_transport_task t
WHERE
t.task_type = 1
AND t.`create_time` <= '2018-07-01'
UNION
SELECT
t.*
FROM
t_yh_transport_task t
LEFT JOIN t_yh_ordertask_extend e ON e.transport_task_id = t.transport_task_id
WHERE
t.task_type = 2
AND e.`order_time` <= '2018-07-01'
) a
-- WHERE
-- a.task_status = '33'
-- OR a.task_status = '99'
);-- 插入日志
INSERT INTO t_yh_move_data_log (time, tablename, count)
VALUES
(
NOW(),
't_yh_transport_task',
counts
);IF result_code = 1 THEN
-- 发生异常就回滚反之就提交
ROLLBACK;ELSE
COMMIT;END
IF;END
- mysql 调用函数:定时 call 上面的存储过程。
mysql数据库 ,java 代码巧妙结合提升系统性能。的更多相关文章
- SSM 配合 Mysql 数据库和代码数据源主从分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...
- 操作MySQL数据库相关代码
注意事项: 1.导入驱动包,如我导的是mysql-connector-java-5.1.26-bin.jar 2.修改下面代码中的用户名和密码 3.其中URL为"jdbc:mysql://数 ...
- Linux自动备份MySQL数据库脚本代码
下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行 在脚本中可设置需要备份的数据库表清单,并且会将备份文件通过gzip压缩.需要注意的是, ...
- Java连接MySQl数据库实现代码
1. 获取数据库连接和查询代码 package connectionmysql; import java.sql.Connection; import java.sql.DriverManager; ...
- (详细)JAVA使用JDBC连接MySQL数据库(3)-代码部分
欢迎任何形式的转载,但请务必注明出处. 本节主要内容 项目建立 数据库连接 数据库操作 主函数 点击进入推荐博客(必看) 一.项目建立 如图所示:新建Java Project.Package.Clas ...
- 更新MySQL数据库( java.sql.SQLException: No value specified for parameter 1) 异常 解决方法
package com.swift; import java.io.File; import java.sql.Connection; import java.sql.PreparedStatemen ...
- Mysql 数据库 基础代码
-- 创建数据库 CREATE DATABASE book; -- 创建作者表 CREATE TABLE authors( Id int not NULL, -- 作者编号 Fname VARCHAR ...
- Java连接MySQL数据库及简单操作代码
1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...
- MySQL入门很简单: 15 java访问MySQL数据库
1. 连接数据库 1.1 下载安装驱动 java通过JDBC(Java Database Connectivity,Java数据库连接)来访问MySQL数据库.JDBC的编程接口提供的接口和类与MyS ...
随机推荐
- zipline-- 开发指南
Development Guidelines开发指南This page is intended for developers of Zipline, people who want to contri ...
- 常用软件记录 ( Windows )
带括号注明的为主力软件 现安装的: 360驱动大师 7-Zip Acrobat Reader DC Adobe Photoshop 7.0 Anaconda babun Bandizip (解压) b ...
- git怎样删除未监视的文件untracked files
# 删除 untracked files git clean -f # 连 untracked 的目录也一起删掉 git clean -fd # 连 gitignore 的untrack 文件/目录也 ...
- HTML5+CSS3-学习总结
这是第三次学标签和样式了,虽然距离上次差不多2年.可学过的东西依旧还在. 体会 1. 相对于前端技术,基础还是很重要的. 2. 虽然很繁多.并不是杂乱无章的. 3. HTML5在新增的几个标签, ...
- 搜索表字段包含某字符串的SQL和监控Oracle数据库的SQL。
1.第一个SQL 背景:需要找到SQL Server数据库中,包含某个字符串的表,输出表和包含该字符串的列. )='=' --这里填要搜索的字符串 DECLARE @sql NVARCHAR(MAX) ...
- SpringMVC整合Thymeleaf3
(1).pom添加相关依赖 <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thym ...
- Java小程序练习
1.选择排序法所谓的选择排序,就是把当前数据与它后面所有的数据做个比较,假如满足比较条件,则进行交换操作,直到最后二个数比较完毕,这样重新输出的数据就已经由大到小或者由小到大排好序了.for(int ...
- 无法为具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer”。请确保使用限定程序集的名称且该程序集对运行的应用程序可用。有关详细信息,请参阅 http://go.m
Windows服务中程序发布之后会如下错误: 无法为具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“Syste ...
- java sigar获取本地信息以及org.hyperic.sigar.SigarException: The device is not ready报错解决
window下,使用java sigar 获取磁盘使用率,cpu使用率以及内存使用情况等信息时. 一:首先需要下载jar包和相关文件 sigar-1.6.4.zip 如果想了解更多可以去 sigar官 ...
- 2018-2019-2 20165323《网络攻防技术》Exp5 MSF基础应用
一.知识点总结 1.MSF攻击方法 主动攻击:扫描主机漏洞,进行攻击 攻击浏览器 攻击其他客户端 2.MSF的六种模块 渗透攻击模块Exploit Modules:攻击漏洞,把shellcode&qu ...