ホームページ データベース mysql チュートリアル MySQL内核:InnoDB存储引擎 卷1

MySQL内核:InnoDB存储引擎 卷1

Jun 01, 2016 pm 01:12 PM
北京 ブログ 開発する データベース 分野

MySQL内核:InnoDB存储引擎1MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典

姜承尧 蒋鸿翔 饶珑辉 温正湖 著  

ISBN 978-7-121-22908-4

2014年5月出版

定价:69.00元

360

16

编辑推荐

预售前100位读者送MySQL 5.6 InnoDB存储引擎的架构图

l  《高性能MySQL》配套深度阅读数据库内核解析篇

l  网易资深数据库专家十余年深耕之作

l  深入理解InnoDB引擎是如何设计和工作的

l  让正在通往或已经在数据库内核开发道路的人员少走弯路

内容提要

《MySQL内核:InnoDB存储引擎 卷1》由资深MySQL专家,机工畅销图书作者亲自执笔,在以往出版的两本InnoDB介绍性图书的基础之上,更深入地介绍InnoDB存储引擎的内核,例如latch、B+树索引、事务、锁等,从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并给出了大量最佳实践,希望通过《MySQL内核:InnoDB存储引擎 卷1》帮助用户真正了解一个数据库存储引擎的开发。

《MySQL内核:InnoDB存储引擎 卷1》可以成为带领读者进入数据库存储引擎的内核开发,帮助那些从事MySQL数据库的相关行业从业人员。同时,《MySQL内核:InnoDB存储引擎 卷1》也适合对于研究生阶段有志于数据库内核开发的同学。

目录

第1章 概览

1.1 InnoDB 存储引擎历史

1.2 源码版本

1.3 源码风格

1.3.1 源码结构

1.3.2 代码风格

1.4 代码编译

1.5 阅读源码次序

1.6 思考题

1.7 继续阅读

第2章 基本数据结构与算法

2.1 相关文件

2.2 内存管理系统

2.2.1 内存管理

2.2.2 通用内存池

2.3 哈希表

2.3.1 哈希算法

2.3.2 数据结构

2.4 双链表

2.4.1 内存双链表

2.4.2 磁盘双链表

2.5 其他数据结构和算法

2.5.1 动态数组

2.5.2 排序

2.6 小结

2.7 思考题

2.8 继续阅读

第3章 同步机制

3.1 相关文件

3.2 基础知识

3.2.1 memory model

3.2.2 mutual exclution

3.2.3 Atomic Read-Modify-Write Operation

3.2.4 spin lock

3.2.5 死锁

3.3 InnoDB 同步机制

3.3.1 mutex

3.3.2 rw-lock

3.3.3 wait array

3.3.4 死锁检测

3.4 小结

3.5 思考题

3.6 继续阅读

第4章 重做日志

4.1 相关文件

4.2 相关概念

4.2.1 简介

4.2.2 物理逻辑日志

4.2.3 LSN

4.2.4 检查点

4.2.5 归档日志

4.2.6 恢复

4.3 物理存储结构

4.3.1 重做日志物理架构

4.3.2 重做日志块

4.3.3 重做日志组与文件

4.4 相关数据结构

4.4.1 log_group_struct

4.4.2 log_struct

4.5 组提交

4.6 恢复

4.6.1 数据结构

4.6.2 重做日志恢复

4.7 总结

4.8 思考题

4.9 继续阅读

第5章 mini-transaction

5.1 相关文件

5.2 mini-transaction 介绍

5.2.1 基本概念

5.2.2 The FIX Rules

5.2.3 Write-Ahead Log(WAL)

5.2.4 Force-log-at-commit

5.3 具体实现

5.3.1 数据结构

5.3.2 物理逻辑日志的实现

5.3.3 mini-transaction 的使用

5.4 示例

5.5 小结

5.6 思考题

5.7 继续阅读

第6章 存储管理

6.1 相关文件

6.2 物理存储

6.2.1 页

6.2.2 区

6.2.3 段

6.2.4 表空间

6.3 数据结构

6.3.1 概述

6.3.2 fil_system_struct

6.3.3 fil_space_struct

6.3.4 fil_node_struct

6.4 异步 I/O

6.4.1 异步 I/O 数据结构

6.4.2 异步 I/O 线程

6.5 总结

6.6 思考题

6.7 继续阅读

第 7 章 记录

7.1 相关文件

7.2 概述

7.3 物理记录

7.3.1 物理记录格式

7.3.2 大记录格式

7.3.3 伪记录

7.4 逻辑记录

7.5 记录之间的比较

7.6 行记录版本

7.7 小结

7.8 思考题

7.9 继续阅读

第8章 索引页

8.1 相关文件

8.2 页

8.3 存储结构

8.3.1 Page Header

8.3.2 Page Directory

8.3.3 示例

8.4 Page Cursor

8.4.1 定位记录

8.4.2 插入记录

8.4.3 删除记录

8.4.4 并发控制

8.5 小结

8.6 思考题

8.7 继续阅读

第9章 锁

9.1 相关文件

9.2 锁与事务

9.2.1 隔离性

9.2.2 事务的隔离级别

9.2.3 幻读

9.3 InnoDB 存储引擎中锁的类型与算法

9.4 锁的内部实现

9.4.1 数据结构

9.4.2 锁的并发控制

9.4.3 锁的类型与模式

9.4.4 锁的兼容性

9.5 显式锁和隐式锁

9.5.1 显式锁与隐式锁的区别

9.5.2 聚集索引记录的隐式锁

9.5.3 辅助索引记录的隐式锁

9.6 加锁操作

9.6.1 加锁流程

9.6.2 加锁过程

9.7 行锁的维护

9.7.1 插入

9.7.2 更新

9.7.3 PURGE

9.7.4 一致性的锁定读

9.7.5 页的分裂

9.7.6 页的合并

9.8 自增锁

9.9 死锁

9.9.1 死锁的概念

9.9.2 死锁概率

9.9.3 死锁的示例

9.10 小结

9.11 思考题

9.12 继续阅读

第10章 B+树索引

10.1 B+ 树

10.1.1 概述

10.1.2 插入

10.1.3 删除

10.2 B+ 树索引

10.2.1 索引的特点

10.2.2 聚集索引

10.2.3 辅助索引

10.2.4 填充因子

10.3 InnoDB 存储引擎 B+ 树索引实现

10.3.2 相关 latch

10.3.3 整理

10.3.4 分裂

10.3.5 合并

10.4 查找

10.4.1 mode

10.4.2 latch_mode

10.4.3 cursor

10.5 DML 操作

10.5.1 插入

10.5.2 非主键更新

10.5.3 主键更新

10.5.4 删除

10.6 持久游标

10.7 自适应哈希索引

10.7.1 实现原理

10.7.2 创建哈希索引

10.7.3 哈希索引的维护

10.7.4 自适应哈希索引的优缺点

10.8 小结

10.9 思考题

10.10 继续阅读

第11章 Insert Buffer

11.1 相关文件

11.2 基本概念

11.3 架构实现

11.3.1 存储结构

11.3.2 逻辑控制

11.3.3 示例

11.4 相关数据结构

11.5 死锁

11.5.1 latch 顺序

11.5.2 并发控制

11.5.3 异步 I/O 线程

11.6 维护

11.6.1 记录合并

11.6.2 空间收缩

11.7 小结

11.8 思考题

11.9 继续阅读

第12章 缓冲池

12.1 相关文件

12.2 概述

12.2.1 缓冲池

12.2.2 LRU、Free 和 Flush 链表

12.2.3 基本数据结构

12.3 缓冲池的管理

12.3.1 LRU 算法

12.3.2 LRU 链表维护

12.3.3 页的分配

12.4 页的读取

12.4.1 物理读取

12.4.2 随机预读

12.4.3 线性预读

12.4.4 逻辑读取

12.5 页的刷新

12.5.1 检查点

12.5.2 部分写的问题

12.5.3 刷新的实现

12.6 小结

12.7 思考题

12.8 继续阅读

第13章 事务处理

13.1 相关文件

13.2 事务

13.2.1 概述

13.2.2 分类

13.2.1 隔离级别

13.3 事务系统结构

13.3.1 事务系统段

13.3.2 数据结构

13.4 DOUBLEWRITE 段

13.5 UNDO 日志存储

13.5.1 简介

13.5.2 实现结构

13.5.3 回滚段

13.5.4 UNDO 段

13.6 UNDO 记录

13.6.1 存储结构

13.6.2 INSERT UNDO LOG RECORD

13.6.3 UPDATE UNDO LOG RECORD

13.7 PURGE

13.7.1 清理操作

13.7.2 实现原理

13.8 ROLLBACK

13.8.1 回滚指针

13.8.2 回滚操作

13.9 COMMIT

13.10 kernel_mutex 与并发控制

13.11 小结

13.12 思考题

13.13 继续阅读

第14章 数据字典

14.1 相关文件

14.2 数据字典概述

14.3 主要数据对象

14.3.1 数据字典系统

14.3.2 表定义

14.3.3 索引定义

14.3.4 外键约束定义

14.3.5 其他数据对象定义

14.4 InnoDB 系统表对象

14.4.1 SYS_TABLES

14.4.2 SYS_COLUMNS

14.4.3 SYS_INDEXES

14.4.4 SYS_FIELDS

14.4.5 其他表对象

14.5 数据字典创建

14.5.1 数据字典段

14.5.2 数据字典物理结构

14.5.3 数据字典初始化

14.5.4 数据字典缓存组织

14.6 数据字典对象加载

14.6.1 用户表加载

14.6.2 用户索引和外键约束加载

14.7 小结

14.8 思考题

14.9 继续阅读

第15章 服务管理

15.1 相关文件

15.2 初始化 InnoDB 存储引擎

15.2.1 相关重要参数

15.2.2 服务管理相关数据结构

15.2.3 文件创建和加载

15.2.4 启动后台线程

15.3 关闭 InnoDB 存储引擎

15.3.1 数据持久化

15.3.2 资源释放

15.4 master 线程

15.4.1 主要功能

15.4.2 数据刷盘策略

15.5 锁超时监控线程

15.6 思考题

15.7 继续阅读

作者简介

姜承尧(DavidJiang),MySQL领域的Oracle ACE,资深MySQL数据库专家,擅长于数据库的故障诊断、性能调优、容灾处理、高可用和高扩展研究,同时一直致力于MySQL数据库底层实现原理的研究和探索。此外,对高性能数据库和数据仓库也有深刻而独到的理解。曾为MySQL编写了许多开源工具和性能扩展补丁,如广受好评的InnoDB引擎二级缓存项目。现任网易杭州研究院技术经理一职,负责MySQL数据库的内核开发,参与设计与开发MySQL数据库在网易云环境中的应用。曾担任久游网数据库工程部经理,曾领导并参与了多个大型核心数据库的设计、实施、管理和维护,实战经验非常丰富。活跃于开源数据库以及开源软件领域,是著名开源社区ChinaUnixMySQL版块的版主,热衷于与网友分享自己的心得和体会,深受社区欢迎

前言

为什么要写这本书

过去这些年,我一直在和各种不同的数据库打交道,见证了 MySQL 从一个小型的关系型数据库发展成为各大互联网企业的核心数据库系统的过程。期间我参与了一些大大小小的项目开发工作,成功地帮助开发人员构建了一些可靠的、健壮的应用程序。在这个过程中积累了一些经验,正是这些不断累积的经验赋予了我灵感,于是有了本书。这本书实际上反映了这些年来我做了哪些事情,汇集了很多同行每天可能都会遇到的一些问题,并给出解决方案。

本书是 MySQL 内核系列的第一本书,与之前出版的 MySQL 技术内幕不同的是,该系列的书将更靠近数据库内核层面,揭示 MySQL 数据库内核是如何运行的。MySQL 内核系列的第一本书将从 InnoDB 存储引擎的内核来展开。

毫无疑问,InnoDB 存储引擎已经成为 MySQL 数据库的“标准配置”。Facebook、Twitter、Yahoo、百度、淘宝、腾讯、网易这些互联网公司都将 InnoDB 作为后台的存储引擎。在时间的长河以及线上高并发验证下,其已经被证明是高性能、高可扩展性的引擎。身处数据库这个圈子,可以明显地感觉到从 2010 年开始,各大互联网公司已经不再满足于仅仅使用 InnoDB 存储引擎,他们开始越来越接触到引擎的内核层面,对引擎进行内核级别的优化以及根据公司的业务需求进行二次开发。即使是 DBA 本身也开始慢慢地不满足现状开始研究起 InnoDB 存储引擎的内核,似乎一夜之间不了解点内核实现都不好意思和别人说

你是搞 MySQL 数据库的。当然,我们需要感谢 MySQL 数据库,感谢 MySQL 数据库的创始人和 InnoDB 存储引擎的创始人。正是他们开源了这些代码,使得我们这些后人可以站在巨人的肩膀上继续学习与进步。在这方面,MySQL/InnoDB 比其他数据库都要伟大,更值得我们尊敬。不可否认的是,国内对于数据库内核的开发学习资料与课程都非常有限。本科阶段几乎没有相关课程,仅特定数据库研究方向的研究生才会去关注这些技术,并且这些人才在国内非常稀少。很多想要踏进数据库内核领域的人在最初都会感到迷茫和无助。另外,有些人凭着自己的聪明与天赋看似掌握了内核的实现,但是从他们的博客描述来看,其离真正的理解还是有一些距离的,或者说他们仅刚入门。所以我们才会在网上看到不断有人在翻阅过代码后,或者简单设置了几个断点和调试后抱怨 InnoDB 存储引擎的设计是多么烂。数据库的世界并不如他们想象的那样简单与粗糙,数据库有着自己的理论体系。虽然数据库的实现有很多种,但大多需要遵循一些理论规范,如 Fix Rules、Write-Ahead Log、Force-log-at-commit、Lock 等。

我从 2006 年就开始进行数据库的内核开发,现在想来还最多只能称为 hack。我在内核开发的路上走了很多弯路,经过高人的指点以及自己不断的学习与探索,终于有了一些经验,现通过本书来完整地展示给读者。希望通过 MySQL 内核系列,使正在通往或已经在数据库内核开发道路的人员少走弯路。

出于这个目的,我联合了网易 MySQL 技术组的各位同事,完成了 InnoDB 存储引擎卷 1 的书籍撰写工作。其中第 1、3、4、5、7、8、9、10、11 章由我个人独立完成,第 2 和第 14章由我和温正湖共同完成、第 6 和第 12 章由我和饶陇辉共同完成、第 13 和第 15 章由我和蒋鸿翔共同完成。在每章的最后,我还给出了思考题以及继续阅读的参考资料,通过这部分的内容,读者可以

加深对于每个知识模块的理解,并继续对某一模块进行深入研究。

本书面向的读者群:

数据库管理员

数据库架构设计师

数据库内核开发人员

其他对数据库内核感兴趣的开发人员

如何阅读本书

本书一共有 15 章,每章都像一本“迷你书”,可以单独成册。用户可以有选择地阅读,但是更推荐根据本书的组织方式进行阅读,这样会更具有条理性。

第 1 章概览

本章首先介绍了 MySQL 数据库以及 InnoDB 存储引擎的历史,之后介绍了 InnoDB 存储引擎的源码结构与代码风格,最后推荐了阅读 InnoDB 存储引擎源码的次序。

第 2 章基本数据结构与算法

本章对 InnoDB 中常用的数据结构和算法进行了介绍。首先是 InnoDB 的内存管理系统,从内存管理机制、内存操作基元和内存池及内存区等概念着手进行了详细讲解;之后是哈希表结构,介绍了简单哈希表和带链哈希表两种;然后介绍了双链表结构;最后还介绍了动态数组、标准排序函数。本章的内容是 InnoDB 的基础,相信读者在阅读后续章节的代码时一定会遇到本章所提的相关数据结构与算法。

第 3 章同步机制

本章介绍了 InnoDB 存储引擎中实现的同步机制 mutex 和 rw-lock。InnoDB 存储引擎正是通过这些数据结构才能完成正确并发控制的。

第 4 章重做日志

本章首先介绍与重做日志模块相关的概念,之后具体分析了 InnoDB 存储引擎重做日志模块的实现。InnoDB 存储引擎原先就支持组提交,因此有着相当不错的性能。最后,根据之前所介绍的内容,分析了如何通过重做日志进行有效恢复,从而实现事务系统持久性的要求。

第 5 章 mini-transaction

本章介绍了数据库中的三个协议:Fix Rules、Write-Ahead Log、Force-Log-at-Commit,同时介绍了 InnoDB 存储引擎中 mini-transaction 的实现,并通过一个示例简单展示了 mini-transaction 产生的重做日志内容。

第 6 章存储管理

本章介绍了 InnoDB 存储引擎的物理存储方式,这包括表空间的构成,段、区、页的存储管理。此外,还介绍了 InnoDB 存储引擎的文件操作方式,包括文件操作的架构设计、同步读 /写方式和异步读 / 写方式,分别介绍了 Windows 操作系统、Posix 操作系统以及 InnoDB 模拟的三种异步 I/O 的实现方法。

第 7 章记录

本章介绍了 InnoDB 存储引擎的记录(record),使读者了解在源码中记录可以分为物理记录与逻辑记录,以及各种记录所使用的场合。

第 8 章索引页

本章介绍了 InnoDB 存储引擎的索引页,知道在源码中页可以分为物理页与逻辑页,并且详细分析了 page header 以及 page directory。此外,还对 InnoDB 存储引擎如何在页中进行记录的定位、插入和删除等操作进行了详细介绍。

第 9 章锁

本章介绍了 InnoDB 存储引擎锁的实现技术。在 InnoDB 存储引擎中,其通过 next-keylocking 算法在事务隔离级别为 REPEATABLE READ 实现了完全的隔离性要求。此外,其对锁的设计是一种极其高效的设计方式。每个内核开发人员都应该细读 lock 模块,从而更为深入地理解锁的内部实现。

第 10 章 B+ 树索引

本章对 InnoDB 存储引擎的 B+ 树索引实现做了十分详细的介绍。该部分所需要涉及的内容非常多,与前面章节的联系也比较紧密,是一个极为重要的章节。希望读者可以反复阅读,从而更好地体会 InnoDB 存储引擎中 B+ 树索引的实现。

第 11 章 Insert Buffer

本章介绍了 InnoDB 存储引擎中 Insert Buffer 的实现,首先介绍了 Insert Buffer 的基本概念,然后介绍了 Insert Buffer 的物理与逻辑存储结构,并通过一个示例进行展示。最后,介绍了Insert Buffer 的源码实现。我认为这个模块是难度最大的模块之一。

第 12 章缓冲池

本章介绍了 InnoDB 存储引擎缓冲池的实现,这包括缓冲池的管理、页的读取和页的刷新。此外,还介绍了 InnoDB 存储引擎使用 midpoint insertion strategy LRU 的 LRU 管理机制。

第 13 章事务处理

本章介绍了 InnoDB 存储引擎的事务处理模块,介绍了 InnoDB 存储引擎对于 undo 记录的存储方式,这其中涉及事务系统段、回滚段、undo 段、undo 页、undo 日志、undo 记录等多个概念,读者应该好好地理清这些概念。此外,还讲述了事务的 purge、rollback、commit 等操作的具体实现。相信通过本章的学习读者可以了解如何设计一个高效的事务系统。

第 14 章数据字典

本章介绍了 InnoDB 存储引擎对于数据字典的具体实现,以及其与之前各章的联系。

第 15 章服务管理

本章介绍了 InnoDB 存储引擎各服务模块的管理,并展示了这些服务模块的具体实现。

勘误和支持

由于水平有限,编写时间仓促,书中难免会出现一些错误或不准确的地方,恳请读者批评指正,我将尽力在线上为你提供最满意的解答。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱jiangchengyao@gmail.com,期待能够得到您最真挚的反馈。

致谢

感谢网易研究院的所有同事们,能与一群才华出众的人一起工作让我感到非常荣幸与自豪,同时通过不断地与他人的交流,使我在数据库方面得到了极大的提升和领悟。

感谢电子工业出版社博文视点公司的孙学瑛老师,她在这段时间内始终支持我的写作,正是她的鼓励和帮助引导我顺利完成全部书稿。

谨以此书献给我最亲爱的家人,以及众多热爱 MySQL 数据库的朋友们!

姜承尧(David Jiang)

2014 年4月于中国杭州

 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

おすすめのAI支援プログラミングツール4選 おすすめのAI支援プログラミングツール4選 Apr 22, 2024 pm 05:34 PM

この AI 支援プログラミング ツールは、急速な AI 開発のこの段階において、多数の有用な AI 支援プログラミング ツールを発掘しました。 AI 支援プログラミング ツールは、開発効率を向上させ、コードの品質を向上させ、バグ率を減らすことができます。これらは、現代のソフトウェア開発プロセスにおける重要なアシスタントです。今日は Dayao が 4 つの AI 支援プログラミング ツールを紹介します (すべて C# 言語をサポートしています)。皆さんのお役に立てれば幸いです。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot は、より少ない労力でより迅速にコードを作成できるようにする AI コーディング アシスタントであり、問​​題解決とコラボレーションにより集中できるようになります。ギット

Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Mar 27, 2024 pm 09:39 PM

Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

Go 言語を使用してモバイル アプリケーションを開発する方法を学ぶ Go 言語を使用してモバイル アプリケーションを開発する方法を学ぶ Mar 28, 2024 pm 10:00 PM

Go 言語開発モバイル アプリケーション チュートリアル モバイル アプリケーション市場が活況を続ける中、ますます多くの開発者が Go 言語を使用してモバイル アプリケーションを開発する方法を検討し始めています。シンプルで効率的なプログラミング言語として、Go 言語はモバイル アプリケーション開発でも大きな可能性を示しています。この記事では、Go 言語を使用してモバイル アプリケーションを開発する方法を詳しく紹介し、読者がすぐに始めて独自のモバイル アプリケーションの開発を開始できるように、具体的なコード例を添付します。 1. 準備 始める前に、開発環境とツールを準備する必要があります。頭

どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る Apr 07, 2024 am 09:10 AM

世界初の AI プログラマー Devin の誕生から 1 か月も経たない 2022 年 3 月 3 日、プリンストン大学の NLP チームはオープンソース AI プログラマー SWE-agent を開発しました。 GPT-4 モデルを利用して、GitHub リポジトリの問題を自動的に解決します。 SWE ベンチ テスト セットにおける SWE エージェントのパフォーマンスは Devin と同様で、平均 93 秒かかり、問題の 12.29% を解決しました。専用端末と対話することで、SWE エージェントはファイルの内容を開いて検索したり、自動構文チェックを使用したり、特定の行を編集したり、テストを作成して実行したりできます。 (注: 上記の内容は元の内容を若干調整したものですが、原文の重要な情報は保持されており、指定された文字数制限を超えていません。) SWE-A

Hibernate はポリモーフィック マッピングをどのように実装しますか? Hibernate はポリモーフィック マッピングをどのように実装しますか? Apr 17, 2024 pm 12:09 PM

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます Jul 18, 2024 am 05:48 AM

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

HTML がデータベースを読み取る方法の詳細な分析 HTML がデータベースを読み取る方法の詳細な分析 Apr 09, 2024 pm 12:36 PM

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル Jun 04, 2024 pm 01:42 PM

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

See all articles