在我们日常产品发布的过程中,代码的版本控制可以使用git、svn工具实现。对于数据库每当发布时会出现手动执行sql脚本进行升级数据库,中间经常出现一些漏写、错写情况,对数据库的版本与代码的版本不匹配,导致上线后出现数据库不同步的问题。flyway就是对数据库版本进行控制的工具,可以对不同环境的sql进行迁移 *** 作。
flyway 的官网:https://flywaydb.org/
flyway会对每次执行过sql脚本保存到flyway_schema_history中,在数据库中将保存sql脚本的版本号和对sql生成checksum,当下次执行数据库迁移的时候就会按照版本号从低往高执行。如果以前的版本号脚本已经执行过就不会执行,如果以前版本的sql脚本已经被修改在执行的过程中则会报错。对flyway的详细描述与介绍可以查看flyway的官网。
配置好以上maven组件,在IDEA中就可以看到flyway的快捷插件了。
在插件中undo不能使用,undo为回滚 *** 作。回滚 *** 作只有使用商业版才能使用。
命令行执行
IDEA 工具执行(点击baseline、migrate)
使用migrate必须开头是V+版本号+“_ _“+描述.sql
如V1.0.3_20220618__increment.sql
对已经存在数据库schema结构的数据库的一种解决方案。实现在非空数据库新建metaData flyway_schema_history表,并把Migrations应用到该数据库;也可以在已有表格的数据库中添加metaData数据表。 注:对已有的数据结构的数据库来说,必须要进行baseline,才能进行migrate
清楚掉对应数据库Schema中所有的对象,包括表结构,视图,存储过程等,clean *** 作再dev和test阶段很好用,但是在生产环境务必禁用。
执行migrate会在指定文件夹下的sql按照版本号依次执行迁移 *** 作。也就是执行sql脚本,对已经执行过的sql脚本便不再执行。
MVCC的目的就是多版本并发控制,在数据库中的实现,就是为了解决裂前读写冲突,它的实现原理主要是依赖记录中的 3个隐式字段,undo log ,read view 来实现的。
MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。
MVCC带来的好处:
多版本并发控制(MVCC)是一种用来解决读写冲突的无锁并发控制,也就是为事务分配单向增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读 *** 作只读该事务开始前的数据库的快照,所以MVCC可以为数据库解决以下问题:
1、在并发读写数据库时,可以做到在读 *** 作时不用阻塞写 *** 作,写 *** 作也不用阻塞读 *** 作,提高了数据库并发读写的性能。
2、同时还可以解决脏读,幻读,不可高源旦重复读等事务隔离问题,但不能解决更新丢失问题。
MVCC多版本并发控制:
MVCC(Multi-version Cocurrent Control)多版本并发控制技术是一种利用多个不同版本的数据实现并发控制的技术,其思想是为每次事务前生成一个新版本的数据,在读取数据时选择不同版本的数据可以实现对事务结果的完整性读取。
在使用MVCC时,每个事务都是基于一个已生效的基础版本进行更新,事务可以并行进行,历史版本数据从而可以组装成一种链状结构。
巨杉数据库 SequoiaDB 中的MVCC多版本并发控制技术基于内存老版本和事务段实现的。在MVCC多版本并发控制技术实现过程中,会涉及全局时间戳、全局事务高源ID、全局事务可见性等技术特性。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)