Rumah  >  Artikel  >  pangkalan data  >  Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

Java后端技术全栈
Java后端技术全栈ke hadapan
2023-08-24 15:38:35966semak imbas


Story

Sontinue untuk berkongsi dengan anda, saya pergi ke Shanghai Meituan untuk temu bual dan menghadapi masalah teknikal katakan ia buruk atau baik, ia tidak memberikan perasaan yang menyenangkan kepada penemuduga.

Memang teruk, ia sama dengan banyak perkara, saya biasanya berasa sihat, tetapi apabila tiba masa untuk temuduga, saya tidak dapat memikirkan apa-apa. . dan lain-lain. ( Kerana ini semua soalan temuduga yang saya jumpa dalam talian dan hafal).

Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

Hari ini kita akan bercakap tentang MySQLsistem seni bina, walaupun kami adalah Java Pembangun, tetapi mereka sering berurusan dengan pangkalan data MySQL dalam proses pembangunan harian. Jika syarikat mempunyai );font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);">DBA boleh lakukan banyak tetapi masih sedikit Lebih baik, jika tiada DBAatauDBA ialah daripada tiada guna, kami masih sangat Perlu memahamiMySQL Keseluruhan sistem , Selain itu, bertemu dengannya semasa temu duga juga merupakan satu kelebihan. MySQL的架构体系,尽管咱们是Java开发人员,但是在日常开发过程中也会经常和MySQL数据库打交道。如果公司有DBA能干点事还稍微好点,如果是没有DBA或者DBA没什么用的情况下,我们还是很有必要了解MySQL的整个体系的,况且在面试中遇到了也是一个加分项。

Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

想要知道一条SQL是怎么查询的,只要对MySQL整个体系搞清楚了,才能说出个123。

Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

所以于情于理,我们很有必要学习一下MySQL的架构体系的。

平时,我和小伙伴们聊天的时候,经常会把MySQL

Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

🎜Saya ingin tahu sesuatuCara SQL disoal, cuma MySQLHanya apabila keseluruhan sistem difahami kita boleh menyebut 123. 🎜

Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera🎜🎜Jadi adalah perlu untuk kita belajar tentang emosi dan sebabMySQLarkitektur. 🎜🎜Biasanya, apabila saya berbual dengan rakan saya, saya sering menggunakan MySQL ialah sistem perisian yang kami bangunkan Memandangkan ia adalah sistem perisian, terdapat gambar rajah seni bina, bagaimana seni bina berlapis dan apakah fungsi setiap lapisan. 🎜

Apakah itu MySQL?

  • MySQL ialah Sistem pengurusan pangkalan data hubungan yang dibangunkan oleh Sweden , 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96 );">MySQL AB code>Dibangunkan oleh syarikat, ia kini dimiliki oleh OracleSyarikat .
  • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。
  • MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  • MySQL是开源的,所以你不需要支付额外的费用。
  • MySQL支持大型的数据库,可以处理拥有上千万条记录的大型数据库。
  • MySQL使用标准的SQL数据语言形式。
  • MySQL可以允许于多个系统上,并且支持多种语言,这些编程语言包括C、C++、Python、Java、Ped、PHP、Eifel、Ruby和TCL等。
  • MySQL🎜MySQL Code> ialah sistem pengurusan pangkalan data hubungan yang menyimpan data dalam jadual yang berbeza dan bukannya meletakkan semua data dalam satu gudang besar, yang meningkatkan kelajuan dan meningkatkan fleksibiliti.
  • 🎜🎜MySQL Kod> adalah sumber terbuka, jadi anda tidak perlu membayar tambahan. 🎜🎜<code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba( 27, 31, 35, 0.05);font-family: " operator mono consolas monaco menlo monospace break-all rgb>MySQL code> menyokong pangkalan data yang besar dan boleh mengendalikan pangkalan data yang besar dengan berpuluh juta rekod. 🎜🎜<code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba( 27, 31, 35, 0.05);font-family: " operator mono consolas monaco menlo monospace break-all rgb>MySQL kod>Menggunakan borang bahasa data SQL standard. 🎜🎜<code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba( 27, 31, 35, 0.05);font-family: " operator mono consolas monaco menlo monospace break-all rgb>MySQL code> boleh digunakan pada berbilang sistem dan menyokong pelbagai bahasa ini termasuk C, C++, Python, Java, Ped, PHP, Eifel, Ruby dan TCL, dsb. 🎜🎜<code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba( 27, 31, 35, 0.05);font-family: " operator mono consolas monaco menlo monospace break-all rgb>MySQL code> mempunyai sokongan yang baik untuk PHP, yang kini merupakan bahasa pembangunan web yang paling popular.<li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);"><code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: " operator mono consolas monaco menlo monospace break-all rgb>MySQL menyokong pangkalan data yang besar, Menyokong gudang data 50 juta rekod Fail jadual sistem 32-bit boleh menyokong maksimum 4GB, dan sistem 64-bit menyokong fail jadual maksimum 8TB. MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
  • MySQL是可以定制的,采用了GPL协议,你可以修改源码来开发自己的MySQL系统。
  • 请注意MySQL拼写,另外,很多人可能有疑问,为什么MySQL的logo是一条海豚?

    下面我们就来看看MySQL的整体架构图。

    MySQL架构图

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    再来看看我们开发的系统架构图:

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    其实还是蛮相似的,都有分层的概念。既然我们开发的软件系统能进行分层,那么MySQL

    🎜🎜MySQL boleh disesuaikan , menggunakan protokol GPL, anda boleh mengubah suai kod sumber untuk membangunkan MySQLsistem. 🎜🎜

    Sila ambil perhatianMySQL ejaan, di samping itu, ramai orang mungkin mempunyai soalan, mengapa Logo MySQLadalah ikan lumba-lumba? 🎜

    Mari kita lihatMySQL Gambar rajah seni bina keseluruhan. 🎜

    Rajah seni bina MySQL

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    Mari kita lihat gambar rajah seni bina sistem yang kami bangunkan: 🎜

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    Sebenarnya, ianya agak serupa konsep pelapisan. Memandangkan sistem perisian yang kami bangunkan boleh berlapis, maka MySQL Bolehkah ia berlapis? 🎜<p data-tool="mdnice编辑器" style="padding-top: 8px;padding-bottom: 8px;line-height: 26px;margin-top: 1px;margin-bottom: 1px;">Jawapannya ialah: Ya, mari kita bincangkannya di bawah<code style="font-size: 14px;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: " operator mono consolas monaco menlo monospace break-all rgb>MySQL Situasi lapisan dan fungsi setiap lapisan. MySQL的分层情况以及每一层的功能。

    架构图分层

    上面的架构图我们可以对其进行拆分,并做简要的说明。

    连接层

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    与客户端打交道,上面已经写明了能支持的的语言。客户端的链接支持的协议很多,比如我们在 Java 开发中的 JDBC

    这一层是不是有点像我们项目中的网关层?如果对网关不熟悉,那我们可以理解我controller

    Pelapisan gambarajah seni bina Kita boleh membahagikan rajah seni bina di atas dan memberikan penjelasan ringkas.

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segeraLapisan sambungan

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera Bersama pelanggan Untuk menangani terminal, bahasa yang disokong telah dinyatakan di atas. Terdapat banyak protokol yang disokong oleh pautan pelanggan, contohnya, kami ada (27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color : rgb(239, 112, 96);">Java Dalam pembangunanJDBC.

    Bukankah lapisan ini sedikit seperti dalam projek kami : rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break -all;color: rgb(239, 112, 96);"> Lapisan gerbang

    ? Jika anda tidak biasa dengan get laluan, maka kami boleh memahami saya lapisan pengawal. Lapisan perkhidmatan

    🎜🎜🎜🎜🎜🎜🎜🎜Lapisan ini bersamaan dengan lapisan perkhidmatan dalam sistem perniagaan kami, satu hodgepodge operasi perniagaan yang berkaitan, pengoptimuman kod semuanya ada di dalamnya, dll. 🎜🎜🎜🎜Kolam sambungan🎜🎜🎜🎜 bertanggungjawab terutamanya untuk menyimpan dan mengurus sambungan antara pelanggan dan pangkalan data, dan satu utas bertanggungjawab untuk menguruskan satu sambungan. Sejak pengenalan kumpulan sambungan, laporan rasmi: Apabila bilangan sambungan pangkalan data mencecah 128, prestasi menggunakan kumpulan sambungan dan tanpa kumpulan sambungan dipertingkatkan sebanyak n kali (walaupun begitu, prestasi bertambah baik). 🎜

    Selepas sambungan diwujudkan, anda boleh melaksanakan penyataan pilih. Logik pelaksanaan akan mula-mula datang ke modul cache.

    Cache

    Selepas MySQL mendapat permintaan pertanyaan, ia akan pergi ke cache pertanyaan terlebih dahulu untuk melihat sama ada pernyataan ini telah dilaksanakan sebelum ini. Pernyataan yang dilaksanakan sebelum ini dan keputusannya disimpan dalam ingatan dalam bentuk pasangan nilai kunci. Kuncinya ialah pernyataan pertanyaan, dan nilainya ialah hasil pertanyaan. Jika pertanyaan anda boleh mencari kunci terus dalam cache ini (tekan), maka nilai akan dikembalikan terus kepada klien.

    Jika terdapat kesilapan dalam cache, fasa pelaksanaan seterusnya akan diteruskan. Selepas pelaksanaan selesai, hasil pelaksanaan akan disimpan dalam cache pertanyaan. Seperti yang anda lihat di sini, jika pertanyaan mencecah cache, MySQL boleh terus mengembalikan hasilnya tanpa melakukan operasi kompleks berikutnya, yang sangat cekap.

    Tetapi dalam kebanyakan kes, saya akan mengesyorkan anda untuk tidak menggunakan caching pertanyaan, mengapa? Kerana caching pertanyaan selalunya mendatangkan lebih banyak kemudaratan daripada kebaikan.

    Cache pertanyaan sangat kerap gagal selagi sekeping data tertentu dalam jadual dikemas kini, semua cache pertanyaan pada jadual ini akan dikosongkan.

    Jadi, anda mungkin mengalami kesukaran untuk menyimpan keputusan, tetapi sebelum anda menggunakannya, keputusan itu akan dibersihkan dengan kemas kini. Untuk pangkalan data dengan tekanan kemas kini yang berat, kadar hit bagi cache pertanyaan akan menjadi sangat rendah. Melainkan perniagaan anda mempunyai jadual statik, ia hanya akan dikemas kini sekali untuk masa yang lama.

    Contohnya: jadual konfigurasi sistem, maka pertanyaan pada jadual ini sesuai untuk cache pertanyaan.

    Nasib baik MySQL juga menyediakan A " ini gunakan pendekatan yang diperlukan". Anda boleh menetapkan parameter query_cache_type ditetapkan kepada DEMAND, supaya pernyataan SQL lalai adalah tidak digunakan Cache pertanyaan. MySQL也提供了这种“按需使用”的方式。你可以将参数query_cache_type设置成DEMAND,这样对于默认的SQL语句都不使用查询缓存。

    「注意」MySQL 8.0

    "Nota": Versi MySQL 8.0 secara langsung memadamkan keseluruhan fungsi cache pertanyaan, yang menandakan bahawa MySQL 8.0 telah menghapuskan fungsi cache sepenuhnya.

    Parser

    Jika cache pertanyaan tidak dipukul, pelaksanaan sebenar kenyataan akan bermula. Pertama, MySQL perlu tahu apa yang anda mahu lakukan, jadi ia perlu menghuraikan pernyataan SQL.

    Penganalisis akan membuat "analisis leksikal" terlebih dahulu. Perkara yang anda masukkan ialah pernyataan SQL yang terdiri daripada berbilang rentetan dan ruang MySQL perlu mengenal pasti rentetan di dalamnya dan apa yang diwakilinya. 🎜

    Selepas selesai analisis leksikal, anda perlu melakukan "analisis tatabahasa". Berdasarkan hasil analisis leksikal, penganalisis sintaks akan menentukan sama ada pernyataan SQL yang anda masukkan memenuhi sintaks MySQL berdasarkan peraturan tatabahasa.

    Jika kami terlepas atau menulis huruf yang salah semasa mengeja SQL, kami akan menerima peringatan ralat "You have an error in your SQL syntax".

    Sebagai contoh, dalam kes berikut:

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    Ralatnya ialah terdapat E yang hilang dalam kata kunci WHERE.

    Begitu juga, kami menggunakan SQL jika medan tidak wujud.

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    Secara amnya, ralat tatabahasa akan menggesa lokasi pertama di mana ralat itu berlaku, jadi anda harus memberi perhatian kepada kandungan serta-merta selepas "use near". .

    SQL telah dianalisis oleh penganalisis dan tiada ralat dilaporkan. Kemudian masukkan pengoptimum pada masa ini untuk mengoptimumkan SQL.

    Optimizer

    Pengoptimum digunakan terutamanya untuk menentukan indeks yang hendak digunakan jika terdapat berbilang indeks dalam jadual pangkalan data kami atau apabila penyata mempunyai berbilang perkaitan jadual (bergabung), Tentukan susunan gabungan setiap jadual.

    Contohnya:

    SELECT a.id, b.id FROM t_user a join t_user_detail b WHERE a.id=b.user_id and a.user_name=&#39;田维常&#39; and b.id=10001

    Ia akan mengoptimumkan pertanyaan bersyarat.

    Selepas pemprosesan pengoptimum selesai, pelan pelaksanaan SQL telah ditentukan. Kemudian teruskan ke dalam penggerak.

    Executor

    Pertama sekali, anda mesti menentukan kebenaran, iaitu sama ada anda mempunyai kebenaran untuk melaksanakan SQL ini. Kebenaran mungkin dikawal pada sesetengah pelanggan semasa bekerja.

    Contohnya: Dalam persekitaran pengeluaran, kebanyakan pembangun hanya mempunyai kebenaran pertanyaan dan tiada kebenaran untuk menambah, memadam atau mengubah suai (kecuali beberapa syarikat kecil).

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    Jika anda mempunyai kebenaran, buka jadual dan teruskan pelaksanaan. Apabila jadual dibuka, pelaksana akan menggunakan antara muka yang disediakan oleh enjin berdasarkan definisi enjin jadual.

    Lapisan enjin storan

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    Lapisan ini boleh difahami sebagai lapisan kegigihan dalam sistem perniagaan kami.

    Konsep enjin storan adalah unik untuk MySQL Tidak semua pangkalan data hubungan mempunyai konsep enjin storan.

    Enjin storan pangkalan data ialah organisasi perisian asas bagi pangkalan data Sistem pengurusan pangkalan data (DBMS) menggunakan enjin data untuk mencipta, membuat pertanyaan, mengemas kini dan memadam data. Enjin storan yang berbeza menyediakan mekanisme storan yang berbeza, teknik pengindeksan, tahap penguncian dan fungsi lain Menggunakan enjin storan yang berbeza, anda juga boleh mendapatkan fungsi tertentu. Banyak sistem pengurusan pangkalan data yang berbeza hari ini menyokong pelbagai enjin data yang berbeza.

    Oleh kerana data disimpan dalam bentuk jadual dalam pangkalan data hubungan, enjin storan juga boleh dipanggil jenis jadual (Jenis Jadual, iaitu jenis penyimpanan dan operasi jadual ini).

    • MySQL versi 5.5 (mysql version
    • MySQL versi 5.5 (versi mysql >= versi 5.5) dan kemudian, enjin storan lalai ialah InnoDB.

    Berikut ialah perbandingan beberapa enjin yang agak biasa digunakan:

    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    Dalam projek sebenar, kebanyakan menggunakan InnoDB, kemudian MyISAM, dan enjin storan lain digunakan sekurang-kurangnya.

    Kita boleh menggunakan arahan untuk melihat enjin storan yang disediakan MySQL:

    show engies;

    Kami juga boleh menggunakan arahan untuk melihat enjin storan lalai semasa MySQL:

    tunjukkan pembolehubah seperti '%storage_engine%';

    Perbezaan antara enjin MyISAM dan InnoDBMyISAMInnoDB引擎的区别

    MySQL

    MySQLEnjin storan lalai sebelum versi 5.5 ialah enjin storan MyISAM. Banyak jadual sistem dalam MySQL menggunakan enjin MyISAM Storage , jadual sementara sistem juga akan menggunakan enjin storan MyISAM, tetapi selepas Mysql5.5, enjin storan lalai ialah enjin storan InnoDB. Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera


    Bagaimana untuk memilih antara dua enjin storan?
    • Adakah terdapat sebarang operasi transaksi? Ya, InnoDB.
    • Adakah anda menyimpan pengubahsuaian serentak? Ya, InnoDB.
    • Adakah anda menjalankan pertanyaan pantas dengan kurang pengubahsuaian data? Ya, MyISAM.
    • Adakah anda menggunakan pengindeksan teks penuh? Jika anda tidak merujuk rangka kerja pihak ketiga, anda boleh memilih MyISAM, tetapi lebih cekap menggunakan rangka kerja pihak ketiga dan InnDB.

    Enjin storan InnoDB terutamanya mempunyai ciri-ciri berikut:
    1. Menyokong urus niaga

    2. pengasingan transaksi

    3. Sokongan Bacaan berbilang versi

    4. menyokong kunci peringkat baris

    5. Sekatan baca dan tulis berkaitan dengan tahap pengasingan transaksi

      🎜
    6. Menyokong caching, yang boleh cache kedua-dua indeks dan data

    7. Seluruh jadual dan kunci utama disimpan dalam mod Kluster untuk membentuk pokok yang seimbang

    f sudah tentu tidak Dikatakan bahawa InnoDB mesti bagus Dalam pembangunan sebenar, anda masih perlu memilih sama ada untuk menggunakan InnoDB atau MyISAM berdasarkan senario tertentu.

    MyIASM (enjin ini ialah enjin storan lalai dalam pangkalan data MySQL sebelum 5.5) Ciri-ciri:

    1. MyISAM tidak menyediakan sokongan untuk transaksi pangkalan data

      Tidak disokong Row -kunci tahap dan kunci asing

    2. Disebabkan oleh 2, apabila melaksanakan sisipan INSERT atau kenyataan kemas kini KEMASKINI, iaitu, semasa melakukan operasi tulis, seluruh jadual perlu dikunci, jadi kecekapan akan menjadi dikurangkan

    3. MyISAM menyimpan bilangan baris dalam jadual Apabila melaksanakan

    4. , nilai yang berkaitan boleh dibaca terus tanpa mengimbas keseluruhan jadual. SELECT COUNT(*) FROM TABLEPerbezaan antara keduanya:

    MyISAM selamat berurus niaga ialah tahap jadual, dan InnoDB menyokong peringkat baris kunci

    1. MyISAM menyokong indeks teks penuh, manakala InnoDB tidak menyokong indeks teks penuh sebelum MySQL5.6 Ia menyokong indeks FULLTEXT bermula dari MySQL5.6.

    Perbandingan senario penggunaan:

    1. Jika anda ingin melakukan sejumlah besar operasi terpilih, anda harus memilih MyISAM

    2. Kalau nak buat persembahan sejumlah besar sisipan dan peningkatan Untuk operasi tarikh, InnoDB harus dipilih

    3. Set data bersaiz besar cenderung memilih enjin InnoDB kerana ia menyokong pemprosesan transaksi dan pemulihan kegagalan. Saiz pangkalan data menentukan tempoh masa pemulihan InnoDB boleh menggunakan log transaksi untuk pemulihan data, yang lebih cepat. Pertanyaan kunci utama juga akan menjadi agak pantas di bawah enjin InnoDB, tetapi perlu diperhatikan bahawa jika kunci utama terlalu panjang, ia juga akan menyebabkan masalah prestasi.

    Secara relatifnya, InnoDB lebih banyak digunakan oleh syarikat Internet.

    Lapisan storan fail sistem


    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera

    Lapisan ini juga boleh difahami sebagai pangkalan data dalam sistem perniagaan kami.
    Lapisan storan fail sistem bertanggungjawab terutamanya untuk menyimpan data pangkalan data dan log dalam fail sistem, dan pada masa yang sama melengkapkan transaksi dengan enjin storan Ia adalah lapisan storan fizikal fail.

    Contohnya: fail data, fail log, fail pid, fail konfigurasi, dsb.

    Fail data
    "db.opt file"
    : Rekod set aksara lalai dan peraturan pengesahan pangkalan data ini.

    "frm file"

    : Maklumat metadata yang disimpan di tepi, termasuk maklumat definisi struktur jadual, dsb. Setiap jadual akan mempunyai fail frm yang sepadan dengannya.

    "Fail MYD"

    : Fail khusus untuk enjin storan MyISAM, yang menyimpan maklumat data jadual MyISAM Setiap jadual MyISAM mempunyai fail .MYD.

    「MYI文件」:也是MyISAM存储引擎专用的文件,存放MyISAM表的索引相关信息,每一张MyISAM表都有对应的.MYI文件。

    「ibd文件和ibdata文件」:存放InnoDB的数据文件(包括索引)。InnoDB存储引擎有两种表空间方式:独立表空间和共享表空间。

    • 独享表空间使用ibd文件来存放数据,并且每一张InnoDB表存在与之对应的.ibd文件。
    • 共享表空间使用ibdata文件,所有表共同使用一个或者多个.ibdata文件。

    「ibdata1文件」:系统表空间数据文件,存储表元数据、Undo日志等。

    「ib_logfile0、ib_logfile0文件」:Redo log日志文件。

    日志文件

    错误日志:默认是开启状态,可以通过命令查看:

    show variables like &#39;%log_error%&#39;;

    二进制日志binary log:记录了对MySQL数据库执行的更改操作,并且记录了语句的发生时间、执行耗时;但是不记录查询select、show等不修改数据的SQL。主要用于数据库恢复和数据库主从复制。也是大家常说的binlog日志。

    show variables like &#39;%log_log%&#39;;//查看是否开启binlog日志记录。
    show variables like &#39;%binllog%&#39;;//查看参数
    show binary logs;//查看日志文件

    慢查询日志:记录查询数据库超时的所有SQL,默认是10秒。

    show variables like &#39;%slow_query%&#39;;//查看是否开启慢查询日志记录。
    show variables &#39;%long_query_time%&#39;;//查看时长

    通用查询日志:记录一般查询语句;

    show variables like &#39;%general%&#39;;
    配置文件

    用于存放MySQL所有的配置信息的文件,比如:my.cnf、my.ini等。

    「pid文件」

    pid文件是mysqld应用程序在Linux或者Unix操作系统下的一个进程文件,和许多其他Linux或者Unix服务端程序一样,该文件放着自己的进程id。

    「socket文件」

    socket文件也是Linux和Unix操作系统下才有的,用户在Linux和Unix操作系统下客户端连接可以不通过TCP/IP网络而直接使用Unix socket来连接MySQL数据库。

    SQL查询流程图

    . warna latar belakang: rgba(27, 31, 35, 0.05); keluarga fon: "Operator Mono", Consolas, Monaco, Menlo, monospace;patah perkataan: pecah-semua;warna: rgb(239, 112, 96) ;">MySQL Kita boleh menganggap keseluruhan sistem sebagai sistem perisian yang kita bangunkan setiap hari. Ia juga mempunyai lapisan akses, yang direka khusus untuk menyambung kepada pelanggan luaran. Ia sangat serupa dengan pintu masuk sistem kami , dan cache adalah serupa dengan kod perniagaan kami Cache dan parser yang digunakan boleh difahami sebagai penghuraian parameter dan pengesahan parameter dalam sistem perniagaan Lapisan pengoptimuman boleh digunakan sebagai cara untuk mengoptimumkan pembangunan kod kami enjin adalah bersamaan dengan lapisan kegigihan kami, dan sistem fail bersamaan dengan keseluruhan sistem perniagaan.
    Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segeraMungkin metafora itu tidak begitu sesuai, tetapi saya harap semua orang dapat memahami maksud keterukan hanya satu tujuan, iaitu untuk memudahkan semua orang memahaminyaMySQLsituasi keseluruhan.

    Sesetengah gambar dalam artikel adalah dari Internet dan akan dipadamkan! Jangan iri hati sesetengah orang yang hebat atau tuhan yang hebat setiap hari, mereka juga telah datang selangkah demi selangkah. Yakinlah, selagi anda melakukannya sedikit demi sedikit dan bekerja secara turun-temurun, anda akan menjadi tuan yang hebat.

    MySQL整个系统我们可以看成是我们日常开发的软件系统,也有接入层,专门对接外面客户端的,和我们系统的网关就很像,缓存也就类似我们业务代码中使用的缓存,解析器可以理解为业务系统中参数解析以及参数校验,优化层可以当做我们开发代码优化的手段,然后存储引擎就相当于我们的持久层,文件系统相当于整个业务系统中的数据库。

    可能比喻不是非常的恰当,但是希望大家能领略轻重的含义,目的只有一个,那就是让大家能轻松掌握MySQLBacaan yang disyorkan


    Jika anda tidak bergerak, saya tidak akan bergerak---Mod pemerhati

  • Ringkasan wawancara dengan 4 syarikat dalam 10 hari selepas peletakan jawatan

    Temuduga bahagian belakang berharga 230,000 yuan dan lebih daripada 500 halaman, yang sangat mengagumkan!

  • 112 ringkasan temuduga, disyorkan untuk mengumpul

  • Atas ialah kandungan terperinci Penemuduga Meituan: Terangkan dengan jelas sistem struktur MySQL dan buat tawaran dengan segera. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:Java后端技术全栈. Jika ada pelanggaran, sila hubungi admin@php.cn Padam