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数据字典
服务管理

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk memadamkan nota Xiaohongshu? pandangan! Tutorial penggunaan Xiaohongshu Cara memadam nota Xiaohongshu 1. Mula-mula buka APP Xiaohongshu dan masukkan halaman utama, pilih [Saya] di sudut kanan bawah untuk memasuki kawasan khas 2. Kemudian di kawasan Saya, klik pada halaman nota sebagai ditunjukkan di bawah , pilih nota yang anda mahu padamkan;

Nota yang dipadamkan daripada Xiaohongshu tidak boleh dipulihkan. Sebagai platform perkongsian pengetahuan dan membeli-belah, Xiaohongshu menyediakan pengguna dengan fungsi merekod nota dan mengumpul maklumat berguna. Menurut kenyataan rasmi Xiaohongshu, nota yang dipadam tidak boleh dipulihkan. Platform Xiaohongshu tidak menyediakan fungsi pemulihan nota khusus. Ini bermakna sebaik sahaja nota dipadamkan dalam Xiaohongshu, sama ada ia dipadam secara tidak sengaja atau atas sebab lain, secara amnya adalah mustahil untuk mendapatkan semula kandungan yang dipadamkan daripada platform. Jika anda menghadapi keadaan istimewa, anda boleh cuba menghubungi pasukan perkhidmatan pelanggan Xiaohongshu untuk mengetahui sama ada mereka boleh membantu menyelesaikan masalah tersebut.

Sebagai pengguna Xiaohongshu, kita semua pernah menghadapi situasi di mana nota yang diterbitkan tiba-tiba hilang, yang sudah pasti mengelirukan dan membimbangkan. Dalam kes ini, apa yang perlu kita lakukan? Artikel ini akan menumpukan pada topik "Apa yang perlu dilakukan jika nota yang diterbitkan oleh Xiaohongshu hilang" dan memberi anda jawapan terperinci. 1. Apakah yang perlu saya lakukan jika nota yang diterbitkan oleh Xiaohongshu tiada? Pertama, jangan panik. Jika anda mendapati nota anda tiada, bertenang adalah kunci dan jangan panik. Ini mungkin disebabkan oleh kegagalan sistem platform atau ralat operasi. Menyemak rekod keluaran adalah mudah. Cuma buka Apl Xiaohongshu dan klik "Saya" → "Terbitkan" → "Semua Penerbitan" untuk melihat rekod penerbitan anda sendiri. Di sini anda boleh mencari nota yang disiarkan sebelum ini dengan mudah. 3.Siaran semula. Jika dijumpai

Pautkan AppleNotes pada iPhone menggunakan ciri Tambah Pautan. Nota: Anda hanya boleh membuat pautan antara Apple Notes pada iPhone jika anda telah memasang iOS17. Buka apl Nota pada iPhone anda. Sekarang, buka nota di mana anda ingin menambah pautan. Anda juga boleh memilih untuk membuat nota baharu. Klik di mana-mana sahaja pada skrin. Ini akan menunjukkan menu kepada anda. Klik anak panah di sebelah kanan untuk melihat pilihan "Tambah pautan". Klik padanya. Kini anda boleh menaip nama nota atau URL halaman web. Kemudian, klik Selesai di penjuru kanan sebelah atas dan pautan yang ditambahkan akan muncul dalam nota. Jika anda ingin menambah pautan pada perkataan, klik dua kali perkataan untuk memilihnya, pilih "Tambah Pautan" dan tekan

Bagaimana untuk menambah pautan produk dalam nota dalam Xiaohongshu? Dalam aplikasi Xiaohongshu, pengguna bukan sahaja boleh menyemak imbas pelbagai kandungan tetapi juga membeli-belah, jadi terdapat banyak kandungan tentang cadangan membeli-belah dan perkongsian produk yang baik dalam aplikasi ini pada aplikasi ini, anda juga boleh berkongsi beberapa pengalaman membeli-belah, mencari peniaga untuk kerjasama, menambah pautan dalam nota, dll. Ramai orang sanggup menggunakan aplikasi ini untuk membeli-belah, kerana ia bukan sahaja mudah, tetapi juga mempunyai ramai Pakar akan membuat beberapa cadangan Anda boleh menyemak imbas kandungan yang menarik dan melihat sama ada terdapat produk pakaian yang sesuai dengan anda. Mari lihat cara menambah pautan produk pada nota Cara menambah pautan produk ke Xiaohongshu Notes Buka aplikasi pada desktop telefon mudah alih anda. Klik pada halaman utama apl

Untuk memasang kernel Linux pada Ubuntu22.04, anda boleh mengikuti langkah berikut: Kemas kini sistem: Pertama, pastikan sistem Ubuntu anda adalah yang terkini, laksanakan arahan berikut untuk mengemas kini pakej sistem: sudoaptupdatesudoaptupgrade Muat turun fail kernel: Lawati laman web rasmi kernel Linux () untuk memuat turun versi kernel yang diperlukan. Pilih versi yang stabil dan muat turun fail kod sumber (dengan sambungan .tar.gz atau .tar.xz), sebagai contoh: wget Nyahzip fail: Gunakan arahan berikut untuk nyahzip fail kod sumber kernel yang dimuat turun: tar-xflinux-5.14 .tar. xz install build dependencies: Pasang alatan dan dependencies yang diperlukan untuk membina kernel. Laksanakan

Ubah suai urutan permulaan kernel Linux 1. Ubah suai urutan permulaan kernel RHEL6/CentOS6 Semak fail /etc/grub.conf untuk menentukan situasi kernel sistem. Menurut dokumen tersebut, terdapat dua versi kernel dalam sistem iaitu 2.6.32-573.18.1.el6.x86_64 dan 2.6.32-431.23.3.el6.x86_64. Versi kernel disenaraikan dari atas ke bawah. Dalam fail grub.conf, anda boleh memutuskan versi kernel yang hendak digunakan apabila sistem bermula dengan melaraskan parameter lalai. Nilai lalai ialah 0, yang bermaksud sistem akan but versi kernel terkini. Nilai 0 sepadan dengan kandungan pertama yang disenaraikan dalam fail grub.conf.

Sebagai platform perkongsian gaya hidup, Xiaohongshu merangkumi nota dalam pelbagai bidang seperti makanan, perjalanan dan kecantikan. Ramai pengguna ingin berkongsi nota mereka tentang Xiaohongshu tetapi tidak tahu cara melakukannya. Dalam artikel ini, kami akan memperincikan proses menyiarkan nota pada Xiaohongshu dan meneroka cara menyekat pengguna tertentu pada platform. 1. Bagaimana untuk menerbitkan tutorial nota mengenai Xiaohongshu? 1. Daftar dan log masuk: Pertama, anda perlu memuat turun APP Xiaohongshu pada telefon mudah alih anda dan melengkapkan pendaftaran dan log masuk. Adalah sangat penting untuk melengkapkan maklumat peribadi anda di pusat peribadi. Dengan memuat naik avatar anda, mengisi nama panggilan dan pengenalan peribadi anda, anda boleh memudahkan pengguna lain memahami maklumat anda, dan juga membantu mereka memberi perhatian yang lebih baik kepada nota anda. 3. Pilih saluran penerbitan: Di bahagian bawah halaman utama, klik butang "Hantar Nota" dan pilih saluran yang ingin anda terbitkan.
