Flyway 将 SQL 文件分为 Versioned 、Repeatable 和 Undo:
Repeatable 可重复执行, 当 Flyway检测到 Repeatable 类型的 SQL 脚本的 checksum 有变动, Flyway 就会重新应用该脚本. 它并不用于版本更新, 这类的 migration 总是在 Versioned 执行之后才被执行。
高性能、云原生分布式SQL数据库,使用C语言编写,支持所有PostgreSQL功能。它最适合需要绝对数据正确性以及可扩展性、故障高容忍度或全局分布式部署的云原生OLTP应用程序。
项目已在GitHub上获得了7k的Stars,并在2022年9月14日更新了v2.14.2.0。
GitHub地址:GitHub - yugabyte/yugabyte-db: The high-performance distribu...
开源协议:Apache License 2.0和Polyform Free Trial License 1.0.0
MyBatis 3.5.9 发布,Java 数据持久层框架
MyBatis 3.5.9 已发布,MyBatis 的前身为 iBatis,是一个数据持久层(ORM)框架,它提供的持久层能力包括 SQL Maps 和 Data Access Objects(DAO)。
主要更新内容:
将nullable添加至<collection />。如果启用此配置项,当 collection 为null时,它会跳过迭代,而不是抛出异常。如需在全局范围内启用此功能,则要在配置中设置 nullableOnForEach=true #1883
此外,新版本还将 Log4J 依赖项的版本更新为 2.17.0。
请注意,MyBatis 的 pom.xml 中 Log4J 依赖的范围是“可选的”,这意味着:
可以在没有 Log4J 的情况下使用 MyBatis
将 MyBatis 添加到项目的依赖项中不会隐式引入 Log4J
更新 MyBatis 版本不会使您的项目更安全,因为它不会影响您项目中的 Log4J 版本
无论使用的是哪个 MyBatis 版本,都可以/必须独立更新 Log4J 版本
发布公告还写道,自 3.5.8 以来,此版本没有任何已知的向后不兼容变化,完整变更内容查看 3.5.9 milestone 页面。
下载地址
Release mybatis-3.5.9 · mybatis/mybatis-3 · GitHub
网页链接
周末福利-DBA工具集|SQL Toolbelt分享
无论您是DBA还是开发人员,您都可以从使用好的工具中获益。SQL Toolbelt是您访问所需的所有SQL Server工具的最简单和最有效的方法,以便以您想要的方式快速完成工作。
RedGate SQL ToolBelt包含工业开发、部署、备份和监控 SQL Server 的标准产品。它们共同使项目和源代码提高效率、团队成长和数据安全。每天都有数以千计的专家 SQL Server 基于RedGate SQL ToolBelt,因为它可靠、易于使用并且可以插入他们用来开发应用程序的工具中。
RedGate SQL ToolBelt包含工业开发、部署、备份和监控 SQL Server 的标准产品。它们共同使项目和源代码提高效率、团队成长和数据安全。每天都有数以千计的人基于RedGate SQL ToolBelt管理SQLSERVER数据库,因为它可靠、易于使用并且可以插入他们用来开发应用程序的工具中。
将数据库包含在您的持续集成等自动化流程中,除了您的应用程序和建立可靠的部署流程之外,还可以重复快速、经常地更新数据库。
在使用 SQL Toolbelt 中的任何部署工具时,查看部署对性能服务器 SQL 的直接影响。部署从 SQL 比较或自动更改 SQL 以标记在 SQL Monitor 中的时间线旁边的数据关键性能。使用 SQL compare Pro 和 SQL Data compare Pro 比较和同步数据库。在几秒钟内设置比较,并指定要部署的更改。
RedGate SQL ToolBelt 的特点
-SQL比较专业
-比较 SQL 数据
-提醒SQL
-创建数据 SQL
-文档 SQL
-检查 SQL
-命令多 SQL
-跟踪过程取决于 SQL
-自动更改 SQL
-筛选 SQL
-备份 SQL。
总结:
喜欢的朋友赶紧点击下载吧![微笑]
这几天我在杭州接到一个是微软在北京公司电话,要求我们杭州公司50台电脑安装的微软的Windows、office、Windows Server、SQL Server软件取得版权。
我一直想不通,他怎么知道我公司的电脑数的。
后来我才想起来,大概二个月前接到一个自称是电信公司的电话,说要到网络在下午4点进行检修,还问我有多少台电脑之类的。
我现在才想起来,这是套路我,好大一盘棋!
那么现在文件已发来,准备缴钱了,这个世界没有一直免费的午餐。
中国的操作系统软件还是要加油干,办公软件有雷军的wps,操作系统有谁?数据库有谁?
不要等有一天飞机飞不起来,高铁不会动,火箭发不出去才去搞这些软件。
工业软件的缺口也是很大,高校这方面培养的人才少,成才率低,使得大量缺乏。
真正人才还是少了。5G人工智能物联网,高科技人才太少了,沉下心搞技术的太稀缺了。
微软这个win10软件要多少钱,哪个友友知道?#Win10更新致CPU使用率过高##杭州头条#
ReadySet是一个轻量级SQL缓存引擎,旨在帮助开发人员提升现有数据库应用程序的性能和可扩展性。它会预计算经常访问的查询结果,并随着数据库中底层数据的变化自动使这些结果保持最新。ReadySet与MySQL和Postgres线兼容,无需改变代码即可采用。
ReadySet同时充当了SQL缓存和代理,当你第一次将ReadySet连接到应用程序时,它默认将你的所有查询代理到备份数据库中,不会改变你的应用程序的行为。
这样一来,你可以使用ReadySet控制面板对自己查询的性能进行监控,并将其中的一部分查询缓存在ReadySet中。当数据库中的底层数据随时间变化时,ReadySet自动更新缓存结果,因而不需要编写缓存维护逻辑。
不过,需要注意的是,ReadySet虽然开放源代码,但它并不是一个完全开源的项目,遵守的是BSL协议(全称为Business Source License)1.1,四年的2026年才会转为开源协议Apache License 2.0。
项目地址:GitHub - readysettech/readyset: ReadySet is a lightweight SQ...
mybatis-plus 3.5.0 发布,定个小目标。
Mybatis-Plus 是一款 MyBatis 的增强工具包,简化 CRUD 操作。启动加载 XML 配置时注入单表 SQL 操作 ,为简化开发工作、提高生产率而生。Mybatis-Plus 启动注入非拦截实现、性能更优,让你专注业务快速敏捷开发。
MP 的小目标让您拥有更多的时间、去养生、去摸鱼 !!!
2022 年定个小目标,重构 mp 4.0
2021 年度 OSC 中国开源项目评选结果公布 很高兴 MP 连续 5 年入围 OSC 最受欢迎软件名单,感谢各位粉丝的积极踊跃投票,祝各位新春快乐 。
演示例子 mybatis-plus-samples 帮助文档
更新日志
升级 mybatis 3.5.9
升级 jsqlparser 4.3
新增移除 Mapper 相关缓存,支持 GroovyClassLoader 动态注入 Mapper
添加动态表名的钩子函数 Update DynamicTableNameInnerInterceptor.java by baymaxxjf · ...
注入类 DefaultSqlInjector 优化调整
反射类 ReflectionKit 优化 field -> field 改为 Function.identity()
baseMapper 新增方法 exist 方法
解决 sysbase 小写 from 导致 index 取不到正确的索引值问题
新增通过 entityClass 获取 Mapper 方法 BaseMapper<Entity> mapper = SqlHelper.getMapper(Entity.class);
注入方法 byId 注入优化
多租户 right join bug 网页链接 网页链接
自定义注入方法名优化 自定义注入方法名优化(不兼容). by nieqiurong · Pull Request #4159 · baomid...
新增 sap hana 内存数据库
新增 SimpleQuery 工具栏查询
SQL 注入验证工具类 代码修改写法
整理字符串常量的使用
upgrade license-gradle-plugin version
自定义注入方法名优化 (不兼容)
重载columnsToString方法允许子类调整
修复 et 判断逻辑 fixed gitee issues/I4L4XV
逻辑删除 byId 支持转换为实体删除填充
【开源资讯】TimescaleDB 2.0.0 发布,基于 PostgreSQL 的时序数据库
TimescaleDB 2.0.0 现已发布。TimescaleDB 是基于 PostgreSQL 开发的一款时序数据库,以插件化的形式打包提供。此版本增加了对分布式超表(多节点 TimescaleDB)的支持,并添加了一些新特性和功能增强,让用户对数据的控制更加清晰和灵活。
多节点架构:特别是在 TimescaleDB 2.0 中,用户现在可以在 TimescaleDB 的多个实例上创建分布式超表,配置成一个实例作为访问节点,其他多个实例作为数据节点。分布式超表的所有查询都是向访问节点发出的,但插入的数据和查询会在数据节点上向下推送,以提高规模和性能。多节点 TimescaleDB 可以自我管理,或者为了便于操作,可以在 Timescale 的完全托管的云服务中启动。
此版本还添加了:
1、支持用户定义的操作,允许用户定义、自定义和计划自动任务,这些任务可以由现在向用户公开的内置作业调度框架来运行。
2、对连续聚合的重大更改,现在将视图创建与策略分开。用户现在可以刷新连续聚合实例化视图的各个区域,或通过策略安排自动刷新。
3、重新设计了信息视图,包括新的(更通用的)视图,这些视图提供有关 hypertable 的维度和块、策略和用户定义的操作以及对多节点 TimescaleDB 的支持的信息。
4、将所有以前的企业功能移至社区版,并更新 Timescale 许可证,该许可证现在为用户和开发人员提供了更多(更宽松)的权限。
值得注意的是,上述的某些更改(例如,连续聚合、更新的信息视图)的确向 API 引入了重大更改,并且不向后兼容。虽然 TimescaleDB 2.0 中的更新脚本将自动升级运行 TimescaleDB 1.x 的数据库,但是其中一些 API 和功能更改可能需要更改依赖于先前 API 的客户端和/或上游脚本。升级之前,建议用户查看 docs.timescale.com 上的升级文档以了解更多详细信息。
MySQL 对于千万级的大表要怎么优化?
很多人第一反应是各种切分;某巴的技术专家给的顺序是:
第一优化你的sql和索引;
第二加缓存,memcached,redis;
第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护;
第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,sql条件中要带上分区条件的列,从而使查询定位到少量的分区上,否则就会扫描全部分区,另外分区表还有一些坑,在这里就不多说了;
第五如果以上都做了,那就先做垂直拆分,其实就是根据你模块的耦合度,将一个大的系统分为多个小的系统,也就是分布式系统;
第六才是水平切分,针对数据量大的表,这一步最麻烦,最能考验技术水平,要选择一个合理的sharding key,为了有好的查询效率,表结构也要改动,做一定的冗余,应用也要改,sql中尽量带sharding key,将数据定位到限定的表上去查,而不是扫描全部的表;
mysql数据库一般都是按照这个步骤去演化的,成本也是由低到高;
有人也许要说第一步优化sql和索引这还用说吗?的确,大家都知道,但是很多情况下,这一步做的并不到位,甚至有的只做了根据sql去建索引,根本没对sql优化(中枪了没?),除了最简单的增删改查外,想实现一个查询,可以写出很多种查询语句,不同的语句,根据你选择的引擎、表中数据的分布情况、索引情况、数据库优化策略、查询中的锁策略等因素,最终查询的效率相差很大;优化要从整体去考虑,有时你优化一条语句后,其它查询反而效率被降低了,所以要取一个平衡点;即使精通mysql的话,除了纯技术面优化,还要根据业务面去优化sql语句,这样才能达到最优效果;你敢说你的sql和索引已经是最优了吗?
再说一下不同引擎的优化,myisam读的效果好,写的效率差,这和它数据存储格式,索引的指针和锁的策略有关的,它的数据是顺序存储的(innodb数据存储方式是聚簇索引),他的索引btree上的节点是一个指向数据物理位置的指针,所以查找起来很快,(innodb索引节点存的则是数据的主键,所以需要根据主键二次查找);myisam锁是表锁,只有读读之间是并发的,写写之间和读写之间(读和插入之间是可以并发的,去设置concurrent_insert参数,定期执行表优化操作,更新操作就没有办法了)是串行的,所以写起来慢,并且默认的写优先级比读优先级高,高到写操作来了后,可以马上插入到读操作前面去,如果批量写,会导致读请求饿死,所以要设置读写优先级或设置多少写操作后执行读操作的策略;myisam不要使用查询时间太长的sql,如果策略使用不当,也会导致写饿死,所以尽量去拆分查询效率低的sql,
innodb一般都是行锁,这个一般指的是sql用到索引的时候,行锁是加在索引上的,不是加在数据记录上的,如果sql没有用到索引,仍然会锁定表,mysql的读写之间是可以并发的,普通的select是不需要锁的,当查询的记录遇到锁时,用的是一致性的非锁定快照读,也就是根据数据库隔离级别策略,会去读被锁定行的快照,其它更新或加锁读语句用的是当前读,读取原始行;因为普通读与写不冲突,所以innodb不会出现读写饿死的情况,又因为在使用索引的时候用的是行锁,锁的粒度小,竞争相同锁的情况就少,就增加了并发处理,所以并发读写的效率还是很优秀的,问题在于索引查询后的根据主键的二次查找导致效率低;
ps:很奇怪,为什innodb的索引叶子节点存的是主键而不是像mysism一样存数据的物理地址指针吗?如果存的是物理地址指针不就不需要二次查找了吗,这也是我开始的疑惑,根据mysism和innodb数据存储方式的差异去想,你就会明白了,我就不费口舌了!
所以innodb为了避免二次查找可以使用索引覆盖技术,无法使用索引覆盖的,再延伸一下就是基于索引覆盖实现延迟关联;不知道什么是索引覆盖的,建议你无论如何都要弄清楚它是怎么回事!
尽你所能去优化你的sql吧!说它成本低,却又是一项费时费力的活,需要在技术与业务都熟悉的情况下,用心去优化才能做到最优,优化后的效果也是立竿见影的!
微软又开源好东西了,一个 Non-SQL 数据库引擎,名为:Extensible-Storage-Engine 可扩展存储引擎。
ESE是基于嵌入式/ ISAM的数据库引擎,它提供基本表和索引访问。 但是,该库还提供了许多其他高度分层的,因此可重用的子功能:同步/锁定库,数据结构/类似STL的库,操作系统抽象层和缓存管理器,以及完整的功能。 …
可扩展存储引擎(ESE,以前称为JET Blue)是那些已被证明具有25年以上使用寿命的罕见代码库之一。 第一次在Windows NT 3.51中发布,此后不久在Exchange 4.0中发布,并在90年代重写了两次,在此后的二十年中进行了大量更新,直到今天,它仍然是Microsoft的核心资产。
它在Office 365邮箱存储后端服务器的数十万台计算机和数百万个磁盘上运行
它还在具有TB内存的大型SMP系统上运行,用于大型Active Directory部署
每台Windows客户端计算机都有几个以内存不足模式运行的数据库实例。 自Windows XP以来,如今在超过10亿个Windows 10设备中,ESE已用于Windows客户端SKU中。
ESE使应用程序可以使用索引或顺序游标导航来从表中存储和检索数据。 它支持非规范化模式,包括具有众多稀疏列,多值列以及稀疏和丰富索引的宽表。 ESE使应用程序可以使用事务处理的数据更新和检索来享受一致的数据状态。 提供了故障恢复机制,即使在系统崩溃的情况下也可以保持数据一致性。 ESE通过预写日志和快照隔离模型在数据和架构上提供ACID(原子一致性隔离持久)。
有关功能和JET API文档的摘要,请访问Microsoft的官方文档网站。
我们的Wikipedia条目中记录了ESE数据库功能的更广泛列表
该库还提供了许多其他高度分层的,因此也是可重用的子工具:
同步和锁定库
类似于STL的数据结构库
操作系统抽象层
块/缓存管理器
所有这些都是成熟的数据库引擎本身之外的。
我们在此处发布的源代码的版本可能会比编译到最新Windows更新中的版本提前一点。 因此,JET API文档可能已过时。
【趣图】
测好的一大堆SQL语句文件放在线上执行,
等执行完发现“选错数据库”了![炸弹]
8838409 rows affected,
换做是我也笑不出来了,
晚上又要熬夜回退数据了[抠鼻][抠鼻][抠鼻][捂脸]
【图二】
GO语言设计得非常规范,
自带了gofmt用于同一代码风格。
在编译阶段,哪怕定义好的变脸未使用,
也是不允许通过的。
就是这么严格!
想起来脚本语言随手一个临时变量,
什么 aaa,bbb,ccc,xxx,
恐怕在GO语言的威严下,
也会渐渐收手了吧[谢谢]
【图三】
我的程序员男朋友有个bug,
我让他去超市买牛奶,
如果有苹果就买6个。
结果,超市是有苹果,
他牛奶也买了,
不过,是——6个!
我说的话有bug吗?[雾霾]
我是@程序员小助手,关注我,持续更新每日科技热点。