当前位置: 首页 > 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.w-s-a.com/news/40535/

相关文章:

  • 企业网站手机版模板免费下载辣条网站建设书
  • 南昌网站建设维护vc 做网站源码
  • 网站动态logo怎么做织梦移动端网站怎么做
  • 三亚城乡建设局网站app下载安装官方网站
  • 公司被其它人拿来做网站郑州哪家做网站最好
  • 山东省建设厅官方网站抖音代运营业务介绍
  • 网站制作 牛商网wordpress商城 微信支付
  • 平面设计培训网站建文帝网站建设
  • python网站建设佛山乐从网站建设
  • 网站 免费 托管运营app软件大全
  • 爱网站找不到了网站设计制作要交印花税
  • 分销平台是什么意思网站如何从行为数据进行优化
  • 做网站公司职务做民俗酒店到哪些网站推荐
  • 从0到建网站wordpress导航主题模板下载地址
  • 以3d全景做的网站统计网站的代码
  • 北辰网站建设WordPress换主题文件夹
  • 做网站的合同范文百度分析工具
  • 深圳企业网站制作公司单位注册wordpress发送邮件
  • 兰州专业网站建设团队wordpress 拉取点击数
  • 基于php房产网站开发ppt模板免费下载第一ppt
  • 网站盈利模式分析怎么做山东营销网站建设联系方式
  • 二级网站建设 知乎我的个人主页模板
  • wordpress小说网站模板下载地址百度优化服务
  • 云南网页设计制作seo计费系统源码
  • 屏蔽ip网站吗行业外贸网站建设
  • 河北城乡建设学校网站常州网站建设公司平台
  • 合肥网站建设市场分析网站收录后怎么做排名
  • 湖南企业网站建设如何推广手机网站
  • 网站建设项目经历网站推广服务 商务服务
  • 加强网站的建设福州seo排名外包