当前位置: 首页 > news >正文

网站都需要什么类别零基础学平面设计难吗

网站都需要什么类别,零基础学平面设计难吗,网站物理结构,页游平台排行榜文章目录 1. 工作流程2. 版本号校验算法3. 锁机制3.1 为什么数据库管理工具需要锁3.2 flyway的锁机制 Reference 最近实习做的几个项目都用到了Flyway来做数据库的版本管理,顺便了解了下基本原理,做个记录。 详细的使用就不写了,网上教程很多…

文章目录

  • 1. 工作流程
  • 2. 版本号校验算法
  • 3. 锁机制
    • 3.1 为什么数据库管理工具需要锁
    • 3.2 flyway的锁机制
  • Reference

最近实习做的几个项目都用到了Flyway来做数据库的版本管理,顺便了解了下基本原理,做个记录。
详细的使用就不写了,网上教程很多。

1. 工作流程

在一个空数据库上部署集成了Flyway的应用:

  1. 因为数据库是空的,Flyway会先创建这个数据库。

  2. Flyway在数据库中创建一张表flyway_schema_histor,用于记录migration的执行情况(跟踪数据库状态)。

  3. Flyway扫描migration脚本,并按版本号顺序执行。

    • 默认的查找 migration 的路径为 classpath:db/migration:
      • 对应 SQL 文件可放置在src/main/resources/db/migration 下;
      • Java 类可放置在 src/main/java/db/migration 下。
        在这里插入图片描述
  4. 变更数据库只需创建一个版本号更高的新migration脚本,下次启动项目时flyway会自动按版本号顺序执行版本号大于flyway_schema_histor表中版本号的脚本

2. 版本号校验算法

flyway在升级数据库时会计算之前已经升级过的脚本的checkSum(CRC32算法,循环冗余校验码),与数据库的checkSum进行对比。

老脚本如果内容发生变化,checkSum校验失败(所以一般老版本的脚本不能修改),抛出异常

3. 锁机制

3.1 为什么数据库管理工具需要锁

上面进行数据库版本更新的changset只需,也只能执行一次。如果我们部署了多个服务实例,就需要锁机制来保证这个changset不会被重复执行。

其实就是分布式锁的经典场景,比如部署了两个service实例,那么肯定需要保证他们互斥访问数据库,也要互斥地管理数据库,Flyway来说就是互斥地执行新脚本,也就是互斥地访问更改flyway_schema_histor

3.2 flyway的锁机制

flyway作为数据库相关的工具,采用的分布式锁的实现方案是基于数据库实现的。

基于数据库实现分布式锁一般有两种:

  • 基于数据库表:比如Liquibase维护了一张databasechangeloglock表来实现分布式锁。

    • 这样有个缺点就是一个service获取锁后还没释放就宕机了,其锁记录一直在DB中,其他线程就无法获取锁。需要手动清理脏锁。
  • 基于数据库排他锁:flyway,直接for update

    @Override
    protected void doLock() throws SQLException {jdbcTemplate.execute("SELECT * FROM " + this + " FOR UPDATE");
    }
    
    • 如果某个持有锁的服务器宕机,其数据库链接也会断开,加在表上的排他锁也会自动释放。不会有Liquibase的那种问题。

Reference

flyway使用
基于数据库实现分布式锁

http://www.yayakq.cn/news/441538/

相关文章:

  • 建设公司网站多少钱长安外贸网站建设
  • app制作网站制作完什么是搜索引擎优化的核心
  • 扶沟县建设局网站深圳手机商城网站设计制作
  • 服装网站建设方案摘要网站建设证书
  • 西安网站优化排名学生网页设计模板
  • 外贸 网站 建设 高端网站开发软件学习
  • 网站蜘蛛怎么看麦德龙网上商城
  • 网站设计公司列表聊城网站建设设计开发公司
  • 策划文案的网站wordpress添加下载文件
  • 阿里云服务器上如何做网站wordpress 修改小工具样式
  • 安阳网站建设兼职网页制作用的软件
  • 站长统计app下载免费wordpress主题包
  • iis网站asp.net部署大庆免费网站建设公司
  • 广州市南沙区建设和交通局网站网站建设制作视频
  • 自己制作个人网站深圳做网站需要多少钱
  • 网站开发公司 经营范围网站维护客户
  • 工信部网站备案验证码网站建设首选玖艺建站信得过
  • 茶山做网站苏州app外包
  • 网站建设方案 前台 后台网站的安全怎么做
  • 网站设计 工作房屋备案信息查询入口
  • photoshop网站模板设计教程视频空间一个数据库可以做几个网站
  • 简历在线制作网站免费discuzx转wordpress
  • 网站制作找化妆品网站建设的目的
  • 淄博建网站哪家好中小企业网站查询
  • 深圳网站建设开发公司东莞网约车驾驶员资格证网上报名
  • 淘宝网站框架宁波网站建设 熊掌号
  • 中国建设银行网站开通短信谷歌网站统计
  • 建设部注册监理工程师网站电商网站seo怎么做
  • 厦门做网站优化价格工作总结教师
  • 南京做网站品牌wordpress文章中带轮播图