当前位置: 首页 > 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/14372663/

相关文章:

  • 网站首页轮播图片小学生课程同步做网站软件
  • 查网站权重邢台网站建设哪儿好
  • 网站开发总结多企业宣传网站建设
  • 肥西县建设局资询网站什么源码做有趣的网站
  • 在技校计算机网站建设东莞网站建设音乐盒
  • 大专电子商务主要学什么博客seo优化技术
  • 一条龙建站多少钱刷关键词怎么刷
  • 网站项目申请网站建设公司如何转型
  • 建设棋牌网站流程搜索引擎营销概念
  • 租车网站开发现在做网站都是怎么做的
  • 用二级域名做网站对seo企业安全文化的建设方案
  • 珠海市网站建设典当行网站
  • photoshop网站视觉设计步骤成全视频在线直播观看
  • 网站对比中国互联网平台
  • 免费网站重生做军嫂网站建站论坛
  • 申请付费网站石家庄网站制作费用
  • 现在用什么做网站个人网站建设实训报告
  • 网站开发服务内容wordpress安装视频
  • 怎么申请网站空间域名it运维发展方向
  • 在线网页设计网站网站建设哪个公司好
  • 英文网站怎么做外贸推广雄安建设网站制作
  • 安徽省建设监理协会新网站网页设计与制作代码成品
  • 职业学校网站模板十大app黄皮软件排行榜
  • 游戏网站开发找什么人可建网站建1设公司
  • 百度宁波运营中心常州百度seo排名
  • 宁夏区建设厅网站网页制作三剑客不包括
  • 怎么制作网站app微网站建设制作
  • wordpress编辑页面图片并排基于 seajs 的高性能网站开发和优化实践_王保平(淘宝)
  • 网站建设商家公司微信网页版公众号网站怎么做
  • 温州住房与城乡建设部网站青白江区城乡和建设局网站