MySQL内核InnoDB存储引擎(卷1)笔记_MySQL
MySQL内核InnoDB存储引擎(卷1)
目录
概览
基本数据结构和算法
同步机制
rw-lock/latch s-/x-:x-可递归,s-不可?;以spin获得,一段时间后进入wait array(信号量?) p38 若sync_primary_wait_array中1000个cell都已分配,则ut_error触发crash 当持有latch的线程释放latch后,调用sync_array_signal_object唤醒等待线程重做日志
p42 redo log原来保证事务的持久性(D),undo log用于回滚和MVCCinnodb_flush_log_at_trx_commit=0/1/2redo log VS. bin log 前者记录的是页的物理逻辑操作日志设计思想:物理日志记录页内的修改(old-new value),逻辑日志记录对表的操作(insert/delete) LSN(表示事务写入redo log的字节量?) 对‘检查点’,表示刷新到磁盘的位置?——不管怎么说,LSN有一种‘随时间单调变化’的性质 检查点:将缓冲池中的页刷新到磁盘 sharpfuzzy* redo日志的大小是固定的(3GB)->归档日志ib_logfilemini-transaction(mtr)
FIX rules:修改页之前需要持有该页的latchWAL 每个页需要有一个LSN?LSN溢出怎么办? Force-Log-at-Commitmtr_t mtr; mtr_start(&mtr); ... mtr_commit(&mtr); 提交时若mtr->modified==TRUE,先修改缓冲池中的页*1,然后释放log_sys->mutex(这是一个热点) *1 log_reserve_and_write_fast/log_write_slow 快速/慢速2个路径 更新多行记录时,MLOG_MULTI_REC_END存储管理
页:(space_id, offset) 16KB1 extent = 64 连续的page space header 段(segment) 每张用户表至少2个段:聚集索引(B+树)的叶子节点和非叶子节点段一个段最多可以管理32个独立的页,和若干区 表空间数据结构:fil_system/space/node_struct4个异步I/O线程:异步读、异步写、插入缓存、重做日志记录
物理记录 p102 用户记录的heap no总是从2开始 伪记录:Infimum/Supremum(感觉将像是双链表的first/last) p103 VARCHAR类型的NULL不占用磁盘空间,而CHAR NULL用0x00填充大记录:BLOB/TEXT(溢出页,extern属性) 逻辑记录 dtuple_struct,对大记录是big_rec_structB+树索引只定位页,页内记录需要二分扫描 mtype/prtype 行记录版本(MVCC只是列?):通过隐藏的事务ID列 read_view_struct: low/up_limit_idtrx_ids, n_trx_idscreator p114 函数read_view_sees_trx_id用来判断当前事务是否可以读记录的当前版本,不是,则row_sel_build_prev_vers_for_mysql索引页
Page Header 页内记录根据主键是逻辑顺序,不是物理顺序 Page Directory(定位记录在页内的位置) slot?offset的主键逆序记录 Page Cursor*锁
p136 理论上,隔离级别越低,事务请求的锁越少或保持锁的时间越短幻读:谓词锁 --> key-range locking --> next/previous-key lockingp138 意向锁:意味着事务希望在更细粒度上加锁 InnoDB是行级锁,不会阻止全表扫描以外的请求 lock_rec_struct = { space, page_no, n_bits } 所有锁对象通过kernel_mutex进行保护(又一个热点!) 优化:细粒度拆分? p144 LOCK_GAP(代表范围锁不包含端点)显式锁和隐式锁**(略)行锁的维护*(重点,略) 插入更新PURGE一致性的锁定读页的分裂页的合并 自增锁(atomic?)死锁*B+树索引
聚集 / 辅助分裂操作:btr_page_split_and_insert合并:btr_compress查找:btr_cur_search_to_nth_level p203 对唯一约束的键值,需要使用模式PAGE_CUR_GE,而不是LElatch_modecursor DML操作 乐观插入:btr_cur_optimistic_insert非主键更新(主要是列的大小会不会发生变化) btr_cur_optimistic_update --> btr_cur_pessimistic_update(例略) 主键更新 删除 持久游标 btr_pcur_struct自适应哈希索引*Insert Buffer
将多次插入合并为一次操作(提高了非唯一约束辅助索引的插入性能)p237 实现最为困难的在于对死锁的处理 页逻辑层次划分:非IB页、IB非bitmap页、bitmap页p241 异步I/O线程可能引起死锁问题 --> rw_lock_x_lock_move_ownership缓冲池
LRU、Free和Flush链表预读 p258 随机预读 要满足32个页中9个已经访问过且都是活跃的才可能触发 线性预读*逻辑预读 页的刷新 部分写问题(?) --> double write(存在于内存的表空间,大小为2MB,这意味着最多128页/次刷新)事务处理
分类:扁平、带保存点的扁平、链、嵌套、分布式事务系统段*doublewrite段*undo日志存储 一致性的非锁定读 p282 读取快照不需要加锁 undo日志实现:回滚段 + undo段 trx_undo_struct undo记录purge*rollback 7B roll_ptr隐藏列 {rseg_id(1), page_no(4), offset(2)}3个回滚类型:TRX_SIG_{TOTAL_ROLLBACK, ROLLBACK_TO_SAVEPT, ERROR_OCCURRED} commit数据字典
服务管理

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie lösche ich Xiaohongshu-Notizen? Die meisten Benutzer wissen nicht, wie man Xiaohongshu-Notizen löscht. Als nächstes bringt der Editor den Benutzern Bilder und Texte zum Löschen von Xiaohongshu-Notizen ein Blick! Tutorial zur Verwendung von Xiaohongshu So löschen Sie Xiaohongshu-Notizen 1. Öffnen Sie zunächst die Xiaohongshu-App und rufen Sie die Hauptseite auf. Wählen Sie in der unteren rechten Ecke [Ich] aus, um den speziellen Bereich aufzurufen. 2. Klicken Sie dann im Bereich „Mein“ auf die Notizseite als Wählen Sie wie unten gezeigt die Notiz aus, die Sie löschen möchten. 3. Rufen Sie die Notizseite auf und klicken Sie auf [drei Punkte] in der oberen rechten Ecke. 4. Schließlich wird die Funktionsleiste unten erweitert. Klicken Sie zum Abschluss auf [Löschen].

Aus Xiaohongshu gelöschte Notizen können nicht wiederhergestellt werden. Als Wissensaustausch- und Einkaufsplattform bietet Xiaohongshu Benutzern die Möglichkeit, Notizen aufzuzeichnen und nützliche Informationen zu sammeln. Laut der offiziellen Erklärung von Xiaohongshu können gelöschte Notizen nicht wiederhergestellt werden. Die Xiaohongshu-Plattform bietet keine spezielle Funktion zur Wiederherstellung von Notizen. Das bedeutet, dass, sobald eine Notiz in Xiaohongshu gelöscht wurde, sei es versehentlich oder aus anderen Gründen, es im Allgemeinen unmöglich ist, den gelöschten Inhalt von der Plattform wiederherzustellen. Wenn Sie auf besondere Umstände stoßen, können Sie versuchen, das Kundendienstteam von Xiaohongshu zu kontaktieren, um zu erfahren, ob es Ihnen bei der Lösung des Problems helfen kann.

Als Xiaohongshu-Benutzer kennen wir alle die Situation, in der veröffentlichte Notizen plötzlich verschwunden sind, was zweifellos verwirrend und besorgniserregend ist. Was sollen wir in diesem Fall tun? Dieser Artikel konzentriert sich auf das Thema „Was tun, wenn die von Xiaohongshu veröffentlichten Notizen fehlen“ und gibt Ihnen eine ausführliche Antwort. 1. Was soll ich tun, wenn die von Xiaohongshu veröffentlichten Notizen fehlen? Erstens: Keine Panik. Wenn Sie feststellen, dass Ihre Notizen fehlen, ist es wichtig, ruhig zu bleiben und nicht in Panik zu geraten. Dies kann durch einen Plattformsystemausfall oder Betriebsfehler verursacht werden. Die Überprüfung der Veröffentlichungsdatensätze ist einfach. Öffnen Sie einfach die Xiaohongshu-App und klicken Sie auf „Ich“ → „Veröffentlichen“ → „Alle Veröffentlichungen“, um Ihre eigenen Veröffentlichungsdatensätze anzuzeigen. Hier können Sie zuvor gepostete Notizen ganz einfach finden. 3.Reposten. Wenn gefunden

Verknüpfen Sie AppleNotes auf dem iPhone mit der Funktion „Link hinzufügen“. Hinweise: Sie können Verknüpfungen zwischen Apple Notes auf dem iPhone nur erstellen, wenn Sie iOS17 installiert haben. Öffnen Sie die Notizen-App auf Ihrem iPhone. Öffnen Sie nun die Notiz, zu der Sie den Link hinzufügen möchten. Sie können auch eine neue Notiz erstellen. Klicken Sie irgendwo auf den Bildschirm. Daraufhin wird Ihnen ein Menü angezeigt. Klicken Sie auf den Pfeil rechts, um die Option „Link hinzufügen“ anzuzeigen. Klicken Sie darauf. Jetzt können Sie den Namen der Notiz oder die Webseiten-URL eingeben. Klicken Sie dann oben rechts auf „Fertig“ und der hinzugefügte Link wird in der Notiz angezeigt. Wenn Sie einem Wort einen Link hinzufügen möchten, doppelklicken Sie einfach auf das Wort, um es auszuwählen, wählen Sie „Link hinzufügen“ und drücken Sie

Wie füge ich Produktlinks in Notizen in Xiaohongshu hinzu? In der Xiaohongshu-App können Benutzer nicht nur verschiedene Inhalte durchsuchen, sondern auch einkaufen. Wenn Sie ein Experte in diesem Bereich sind, gibt es in dieser App viele Einkaufsempfehlungen und gute Produktfreigaben Mit der App können Sie auch einige Einkaufserlebnisse teilen, Händler für eine Zusammenarbeit finden, Links in Notizen hinzufügen usw. Viele Menschen sind bereit, diese App zum Einkaufen zu verwenden, weil sie nicht nur bequem ist, sondern auch viele Experten gibt einige Empfehlungen ab. Sie können interessante Inhalte durchsuchen und sehen, ob es Kleidungsprodukte gibt, die zu Ihnen passen. Schauen wir uns an, wie man Produktlinks zu Notizen hinzufügt! So fügen Sie Produktlinks zu Xiaohongshu-Notizen hinzu: Öffnen Sie die App auf dem Desktop Ihres Mobiltelefons. Klicken Sie auf die App-Homepage

Um den Linux-Kernel auf Ubuntu22.04 zu installieren, können Sie die folgenden Schritte ausführen: Aktualisieren Sie das System: Stellen Sie zunächst sicher, dass Ihr Ubuntu-System auf dem neuesten Stand ist. Führen Sie den folgenden Befehl aus, um das Systempaket zu aktualisieren: sudoaptupdatesudoaptupgrade Laden Sie die Kerneldatei herunter: Besuchen Sie die Offizielle Linux-Kernel-Website () zum Herunterladen der erforderlichen Kernel-Version. Wählen Sie eine stabile Version und laden Sie die Quellcodedatei herunter (mit der Erweiterung .tar.gz oder .tar.xz), zum Beispiel: wget Entpacken Sie die Datei: Verwenden Sie den folgenden Befehl, um die heruntergeladene Kernel-Quellcodedatei zu entpacken: tar-xflinux-5.14 .tar. xz install build dependencies: Installieren Sie die zum Erstellen des Kernels erforderlichen Tools und Abhängigkeiten. Ausführen

Ändern Sie die Kernel-Startsequenz von Linux 1. Ändern Sie die Kernel-Startsequenz von RHEL6/CentOS6. Überprüfen Sie die Datei /etc/grub.conf, um die Systemkernel-Situation zu ermitteln. Dem Dokument zufolge gibt es im System zwei Kernel-Versionen, nämlich 2.6.32-573.18.1.el6.x86_64 und 2.6.32-431.23.3.el6.x86_64. Die Kernel-Versionen werden von oben nach unten aufgelistet. In der Datei grub.conf können Sie durch Anpassen der Standardparameter entscheiden, welche Kernel-Version beim Systemstart verwendet werden soll. Der Standardwert ist 0, was bedeutet, dass das System die neueste Kernel-Version startet. Ein Wert von 0 entspricht dem ersten Inhalt, der in der Datei grub.conf aufgeführt ist.

Als Lifestyle-Sharing-Plattform deckt Xiaohongshu Notizen in verschiedenen Bereichen wie Essen, Reisen und Schönheit ab. Viele Benutzer möchten ihre Notizen zu Xiaohongshu teilen, wissen aber nicht, wie das geht. In diesem Artikel werden wir den Prozess des Veröffentlichens von Notizen auf Xiaohongshu detailliert beschreiben und untersuchen, wie bestimmte Benutzer auf der Plattform blockiert werden können. 1. Wie veröffentliche ich Notizen-Tutorials auf Xiaohongshu? 1. Registrieren und anmelden: Zunächst müssen Sie die Xiaohongshu-APP auf Ihr Mobiltelefon herunterladen und die Registrierung und Anmeldung abschließen. Es ist sehr wichtig, dass Sie Ihre persönlichen Daten im persönlichen Zentrum vervollständigen. Indem Sie Ihren Avatar hochladen, Ihren Spitznamen und Ihre persönliche Vorstellung eingeben, können Sie anderen Benutzern das Verständnis Ihrer Informationen erleichtern und ihnen helfen, Ihren Notizen mehr Aufmerksamkeit zu schenken. 3. Wählen Sie den Veröffentlichungskanal aus: Klicken Sie unten auf der Startseite auf die Schaltfläche „Notizen senden“ und wählen Sie den Kanal aus, den Sie veröffentlichen möchten.
