zoukankan      html  css  js  c++  java
  • mysql数据库 ,java 代码巧妙结合提升系统性能。

       查询频繁的表t_yh_transport_task

    1. 保证数据量最少,增加查询效率,
    2. 常用于查询的字段增加索引,
    3. 每日定时移动数据

      <!-- 医院系统预约任务历史删除定时器 -->
      <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>  

    4. public class DelHosTaskTimer extends QuartzJobBean{具体业务逻辑}
    5. 或者:mysql中写   一个存储过程,每日定时移动数据。
    6. 存储过程:

      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

    7. mysql 调用函数:定时 call  上面的存储过程。   
  • 相关阅读:
    媒体查询
    H5 progress标记
    sqlite数据库常用语句
    C#导出Word文档开源组件DocX
    bat实现监控进程守护程序-保证平台服务的稳定执行
    windows开机自动执行bat脚本启动cmd命令窗口并执行命令,最后自动关闭cmd命令窗
    Python实现定时执行任务的三种方式简单示例
    bat实现守护程序保证平台正常运行
    Windows CMD命令大全
    Windows下使用批处理文件.bat删除旧文件
  • 原文地址:https://www.cnblogs.com/ruize-coding/p/10444343.html
Copyright © 2011-2022 走看看