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

网站建设模板下载免费成都十大平面设计工作室

网站建设模板下载免费,成都十大平面设计工作室,营业执照网上查询官网,做阿里还是网站MySQL 8 和 MySQL 5.7 在自增计数上的区别 作者#xff1a;Arunjith Aravindan 本文来源#xff1a;Percona 博客#xff0c;爱可生开源社区翻译。 本文约 900 字#xff0c;预计阅读需要 2 分钟。 Auto-Increment 自增#xff08;Auto-Increment#xff09;计数功能可以…MySQL 8 和 MySQL 5.7 在自增计数上的区别 作者Arunjith Aravindan 本文来源Percona 博客爱可生开源社区翻译。 本文约 900 字预计阅读需要 2 分钟。 Auto-Increment 自增Auto-Increment计数功能可以为主键列生成唯一值这是数据库的一种设计。与 MySQL 5.7 相比MySQL 8 为自增功能做了一项重要的升级。这个升级可以确保自增计数器的最大值在服务器重启后保持不变从而为数据一致性和可靠性提供了更好的保障。在本文中我们将对比 MySQL 5.7 和 MySQL 8 的不同之处并提供实际示例来展示两者的区别。 MySQL 5.7 的自增 在 MySQL 5.7 中自动增计数器的工作机制如下当向包含自增列的表中插入新的一行数据时计数器会自动加 1生成的数值会作为插入行的主键使用。这个计数器值仅保存在内存中在服务器重启后无法持久化。因此如果服务器崩溃或重启计数器可能会重置为一个较低的值。 MySQL 8 的自增持久化 随着 MySQL 8 的发布自增计数器机制有了显著改进。在 MySQL 8 中自增计数器的最大值现在可以在服务器重启后持久化。这意味着即使服务器重启自增计数器也会从上次结束的地方恢复以确保自增主键的值保持连续。 示例对比 让我们用一个简单的例子来说明 MySQL 5.7 和 MySQL 8 在持久自增计数器方面的区别。我们将创建一个名为 users 的表用于存储用户信息。 在 MySQL 5.7 中建表。 mysql select version(); ----------- | version() | ----------- | 5.7.42-46 | -----------mysql CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL ); Query OK, 0 rows affected (0.02 sec) 在表中插入三条数据可以查看到。 mysql INSERT INTO users (username) VALUES (user1); Query OK, 1 row affected (0.00 sec)mysql INSERT INTO users (username) VALUES (user2); Query OK, 1 row affected (0.00 sec)mysql INSERT INTO users (username) VALUES (user3); Query OK, 1 row affected (0.01 sec)mysql select * from users; -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | | 3 | user3 | -------------- 3 rows in set (0.00 sec) 我们继续删除一条记录并插入一条新记录。 mysql delete from users where id3; Query OK, 1 row affected (0.01 sec)mysql select * from users; -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | -------------- 2 rows in set (0.00 sec)mysql INSERT INTO users (username) VALUES (user4); Query OK, 1 row affected (0.01 sec) 删除 ID 为 3 的记录和插入新记录后与预期一致我们观察到新记录的 ID 为 4。 mysql select * from users; -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | | 4 | user4 | -------------- 3 rows in set (0.00 sec) 现在我们从 users 表中删除最后一条记录ID4重启服务器并检查表内容。 mysql delete from users where id4; Query OK, 1 row affected (0.01 sec)mysql select * from users; -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | -------------- 2 rows in set (0.00 sec)service mysql restartmysql select * from users; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 2 Current database: db1-------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | -------------- 2 rows in set (0.01 sec) 表中只剩下两条记录。我们插入第五条记录判断它是否采用 ID 5还是回退为ID 3。 mysql INSERT INTO users (username) VALUES (user5); Query OK, 1 row affected (0.00 sec)mysql select * from users; -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | | 3 | user5 | -------------- 3 rows in set (0.00 sec) 因此在 MySQL 5.7 中重启会导致自动增长计数器重置为较低的值从而使新的记录插入时采用 ID 3。 MySQL 8 的解决方案 MySQL 8 解决了在服务器重启时 InnoDB 存储引擎出现的自增计数器丢失的问题。这项增强可以确保自增计数器的值在服务器重启后持久化从而保证主键生成的一致性。 在 MySQL 8 中建表。 mysql select version(); ------------------------- | version() | ------------------------- | 8.0.33-0ubuntu0.22.04.2 | ------------------------- 1 row in set (0.00 sec)mysql CREATE TABLE users (- id INT AUTO_INCREMENT PRIMARY KEY,- username VARCHAR(50) NOT NULL- ); Query OK, 0 rows affected (0.04 sec) 在表中插入三条数据可以查看到。 mysql INSERT INTO users (username) VALUES (user1); Query OK, 1 row affected (0.07 sec)mysql INSERT INTO users (username) VALUES (user2); Query OK, 1 row affected (0.02 sec)mysql INSERT INTO users (username) VALUES (user3); Query OK, 1 row affected (0.01 sec)mysql select * from users; -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | | 3 | user3 | -------------- 3 rows in set (0.00 sec) 接下来删除一条并插入一条。 mysql delete from users where id3; Query OK, 1 row affected (0.01 sec)mysql select * from users; -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | -------------- 2 rows in set (0.00 sec)mysql INSERT INTO users (username) VALUES (user4); Query OK, 1 row affected (0.01 sec) 删除 ID 为 3 的记录和插入新记录采用 ID 为 4。 mysql select * from users; -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | | 4 | user4 | -------------- 3 rows in set (0.00 sec) 删除最后一条记录ID4后重启服务器并查看表。 mysql delete from users where id4; Query OK, 1 row affected (0.01 sec)mysql select * from users; -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | -------------- 2 rows in set (0.00 sec)service mysql restartmysql select * from users; ERROR 2013 (HY000): Lost connection to MySQL server during query No connection. Trying to reconnect... Connection id: 8 Current database: db1 -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | -------------- 2 rows in set (0.02 sec) 重启后users 表中只保留两条记录。在 MySQL 8 中插入新记录时如预期那样采用 ID5。 mysql INSERT INTO users (username) VALUES (user5); Query OK, 1 row affected (0.01 sec)mysql select * from users; -------------- | id | username | -------------- | 1 | user1 | | 2 | user2 | | 5 | user5 | -------------- 3 rows in set (0.00 sec) 总结 MySQL 8 之前版本中的 InnoDB 存储引擎报告的自增计数器问题可能会导致困惑和数据不一致特别是在服务器重启期间。计数器的值可能丢失导致自动生成的主键值不匹配。MySQL 8 通过保证自增计数器在服务器重启之间持久化来解决这个问题。 通过升级到 MySQL 8开发者可以利用这个功能创建更加坚实的应用程序可以管理不同的故障情况而不影响数据完整性。 https://www.percona.com/blog/auto-increment-counter-persistence-in-mysql-8-comparing-the-evolution-from-mysql-5-7/ 更多技术文章请访问https://opensource.actionsky.com/ 关于 SQLE 爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者支持多场景审核支持标准化上线流程原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。 SQLE 获取 类型地址版本库https://github.com/actiontech/sqle文档https://actiontech.github.io/sqle-docs/发布信息https://github.com/actiontech/sqle/releases数据审核插件开发文档https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse
http://www.hkea.cn/news/14463673/

相关文章:

  • 公司在百度做网站找谁东莞长安 网站建设
  • 创建站怎么上传网站怎么办全国企业信用信息公示系统查询入口
  • 微博如何做外链到时自己网站最新新闻事件今天国内大事2022
  • 网站开发总结成都公司建设网站
  • asp.net 网站计数器代做百度关键词排名
  • 爱站seo查询如何在云服务器上开多几个网站
  • 西安做网站找哪家公司好手机端的网页
  • 如何做电商网站视频佛山网站优化方法软件
  • 建筑行业官方网站网站的颜色
  • 台州网站建设优化案例Wordpress 微博 链接
  • dw网页制作素材下载北京百度快速优化排名
  • 金馆长做图网站北京最大做网站的公司有哪些
  • 厦门专业网站制作网站咨询弹窗怎么做
  • 网站建设越来越便宜大连开发区
  • 在家帮别人做网站赚钱吗网页制作详细教程
  • 旅游网站开发方案百度文库wordpress 手机站目录
  • 北京建设信息网站四个字网站 域名
  • 南通做网站价格sns网站建设
  • 网站设计与管理网站服务器系统盘满了怎么清理
  • 国家建设工程网站网站设计 用户心理研究
  • 兰州市城市建设设计院网站怎么在网上建网站啊
  • vs做网站创建项目时选哪个多少钱可以做网站
  • iis部署网站 win7旅游外贸网站建设推广
  • 集团网站建现在开天猫店需要多少钱
  • 响应式企业网站模板外贸网站建站和推广
  • 福建省建设工程信息网站vs2010做网站
  • 网站建设最新技术电子商务网站建设与管理课后题答案6
  • 公司营销型网站制作怎么做触屏版网站
  • 有个专门做3d同人网站郑州百度推广公司地址
  • 安徽省干部建设教育网站贵阳网页设计培训