cari
Rumahpangkalan datatutorial mysqlHari ini saya akhirnya mengetahui sub-pangkalan data MySQL dan sub-jadual, jadi saya boleh membual tentangnya dalam temu bual!

Kata Pengantar

Syarikat telah mengusahakan pemisahan perkhidmatan dan pembahagian data baru-baru ini, kerana jumlah data dalam satu jadual pakej adalah terlalu besar, dan ia masih berkembang pada 60W sehari.

Saya telah belajar tentang sub-pangkalan data dan sub-jadual pangkalan data sebelum ini, dan telah membaca beberapa catatan blog, tetapi saya hanya tahu konsep yang samar-samar, dan sekarang saya memikirkannya, semuanya kabur.

Saya menghabiskan sepanjang petang membaca sub-jadual pangkalan data dan membaca banyak artikel Sekarang saya akan membuat ringkasan:

Bahagian 1: Masalah yang dihadapi dalam proses pembangunan laman web sebenar.

Bahagian 2: Apakah cara pembahagian yang berbeza, perbezaan dan aspek yang boleh digunakan antara menegak dan mendatar.

Bahagian 3: Beberapa produk dan teknologi sumber terbuka pada masa ini di pasaran, dan apakah kelebihan dan kekurangannya.

Bahagian 4: Mungkin perkara yang paling penting, mengapa tidak disyorkan untuk memisahkan pangkalan data secara mendatar! ? Ini membolehkan anda merawatnya dengan teliti pada peringkat awal perancangan dan mengelakkan masalah yang disebabkan oleh pembahagian.

Penjelasan istilah

Perpustakaan: pangkalan data; jadual: sub-pangkalan data dan sub-jadual: sharding

Evolusi seni bina pangkalan data Pada mulanya, kami hanya menggunakan pangkalan data mesin tunggal, dan kemudian menghadapi lebih banyak lagi dan lebih banyak permintaan. Kami memisahkan operasi tulis dan operasi baca pangkalan data, menggunakan beberapa salinan pangkalan data hamba (Replikasi Budak) untuk bertanggungjawab membaca, dan menggunakan pangkalan data induk (Master) untuk bertanggungjawab untuk menulis data serentak dari pangkalan data induk untuk memastikan data konsisten. Dari segi seni bina, ia adalah penyegerakan tuan-hamba pangkalan data. Pustaka hamba boleh diskalakan secara mendatar, jadi lebih banyak permintaan baca tidak menjadi masalah.

Tetapi apabila bilangan pengguna meningkat dan permintaan menulis meningkat, apakah yang perlu kita lakukan? Menambah Master tidak dapat menyelesaikan masalah, kerana data perlu konsisten dan operasi tulis memerlukan penyegerakan antara dua induk, yang bersamaan dengan pendua dan lebih rumit.

Pada masa ini, anda perlu menggunakan sharding untuk membahagikan operasi tulis.

Masalah sebelum memecah pangkalan data dan jadual

Sebarang masalah terlalu besar atau terlalu kecil Masalah yang kami hadapi di sini ialah jumlah data terlalu besar.

Jumlah permintaan pengguna terlalu besar

Oleh kerana TPS pelayan tunggal, memori dan IO adalah terhad.

Penyelesaian: Edarkan permintaan kepada berbilang pelayan; sebenarnya, permintaan pengguna dan melaksanakan pertanyaan SQL pada dasarnya adalah sama, kedua-duanya meminta sumber, tetapi permintaan pengguna juga akan melalui get laluan, penghalaan, pelayan http, dsb.

Satu pangkalan data terlalu besar

Kapasiti pemprosesan pangkalan data tunggal adalah terhad

Ruang cakera yang tidak mencukupi pada pelayan di mana pangkalan data tunggal berada

IO kesesakan operasi pada satu pangkalan data

Penyelesaian: Bahagikan kepada lebih banyak perpustakaan yang lebih kecil

Jika satu jadual terlalu besar

CRUD adalah masalah;

Peluasan indeks, tamat masa pertanyaan

Penyelesaian: Bahagikan kepada beberapa jadual dengan set data yang lebih kecil.

Kaedah sharding pangkalan data dan jadual

secara amnya ialah segmentasi menegak dan segmentasi mendatar Ini ialah kaedah segmentasi yang diterangkan oleh set hasil, iaitu segmentasi ruang fizikal.

Kita bermula dari masalah yang kita hadapi dan selesaikan.

Explanation:
Firstly, bilangan permintaan pengguna terlalu besar, jadi kami menumpuk mesin untuk mengendalikannya (ini bukan tumpuan artikel ini)
Den perpustakaan tunggal terlalu besar. untuk melihat sama ada terdapat terlalu banyak data disebabkan terlalu banyak jadual, atau sama ada ia disebabkan oleh satu pangkalan data Terdapat banyak data dalam jadual.
Jika terdapat banyak jadual dan banyak data, gunakan segmentasi menegak dan bahagikannya kepada perpustakaan yang berbeza mengikut perniagaan.
Jika jumlah data dalam satu jadual terlalu besar, pembahagian mendatar harus digunakan, iaitu, data jadual dibahagikan kepada berbilang jadual mengikut peraturan tertentu, atau malah berbilang jadual pada berbilang perpustakaan.

分库分表的顺序应该是先垂直分,后水平分. Kerana pembahagian menegak adalah lebih mudah dan lebih konsisten dengan cara kita menangani masalah dunia sebenar.

Pecah menegak

Pecah meja menegak

juga "memecahkan meja besar kepada meja kecil", yang berdasarkan medan lajur. Secara amnya, terdapat banyak medan dalam jadual, dan medan yang tidak biasa digunakan, mempunyai data yang besar dan panjang (seperti medan jenis teks) dibahagikan kepada "jadual lanjutan". Ia biasanya ditujukan kepada jadual besar dengan beratus-ratus lajur, dan juga mengelakkan masalah "merentas halaman" yang disebabkan oleh terlalu banyak data semasa membuat pertanyaan.

Sub-pustaka menegak

Sub-pustaka menegak bertujuan untuk memisahkan perniagaan yang berbeza dalam sistem, seperti pangkalan data untuk pengguna, pangkalan data untuk produk dan pangkalan data untuk pesanan. Selepas pemisahan, ia harus diletakkan pada berbilang pelayan dan bukannya satu pelayan. kenapa? Bayangkan laman web membeli-belah menyediakan perkhidmatan kepada dunia luar dan mempunyai CRUD untuk pengguna, produk, pesanan, dll. Sebelum berpecah, semuanya jatuh ke dalam pustaka tunggal, yang akan menjadikan pangkalan data Keupayaan pemprosesan pangkalan data tunggal telah menjadi hambatan. Selepas membahagikan pangkalan data secara menegak, jika ia masih diletakkan pada pelayan pangkalan data, apabila bilangan pengguna meningkat, kapasiti pemprosesan pangkalan data tunggal akan menjadi hambatan, dan Ruang cakera, memori, tps, dsb. bagi satu pelayan adalah sangat ketat. Oleh itu, kita perlu membahagikannya kepada beberapa pelayan, supaya masalah di atas dapat diselesaikan dan kita tidak akan menghadapi masalah sumber mesin tunggal pada masa hadapan. 单库处理能力成为瓶颈。按垂直分库后,如果还是放在一个数据库服务器上, 随着用户量增大,这会让单个数据库的处理能力成为瓶颈,还有单个服务器的磁盘空间,内存,tps等非常吃紧。所以我们要拆分到多个服务器上,这样上面的问题都解决了,以后也不会面对单机资源问题。

数据库业务层面的拆分,和服务的治理降级机制类似,也能对不同业务的数据分别的进行管理,维护,监控,扩展等。数据库往往最容易成为应用系统的瓶颈,而数据库本身属于有状态的,相对于Web和应用服务器来讲,是比较难实现横向扩展

Pisah tahap perniagaan pangkalan data dan perkhidmatan rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239 , 112, 96);">Tadbir Urus , Downgrade adalah serupa, Ia juga boleh mengurus, menyelenggara, memantau, mengembangkan, dsb. data perniagaan yang berbeza secara berasingan. Pangkalan data selalunya paling berkemungkinan menjadi kesesakan sistem aplikasi, dan pangkalan data itu sendiri tergolong dalam warna: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);" >Stateful lebih sukar untuk dilaksanakan daripada pelayan web dan aplikasiPeluasan mendatar. Sumber sambungan pangkalan data adalah berharga dan keupayaan pemprosesan mesin tunggal adalah terhad Dalam senario konkurensi tinggi, sub-pangkalan data menegak boleh menembusi kesesakan IO, bilangan sambungan dan sumber perkakasan mesin tunggal pada tahap tertentu. 🎜. pangkalan data dan sub-jadual

akan Data satu jadual dipecahkan kepada berbilang pelayan Setiap pelayan mempunyai pangkalan data dan jadual yang sepadan, tetapi pengumpulan data dalam jadual adalah berbeza dengan berkesan dapat mengurangkan kesesakan prestasi dan tekanan mesin tunggal dan pangkalan data tunggal, dan menembusi Bottleneck dalam IO, bilangan sambungan, sumber perkakasan, dsb. Peraturan sharding mendatar

JulatRANGE,HASH取模等),切分到多张表里面去。但是这些表还是在同一个库中,所以库级别的数据库操作还是有IO瓶颈

Satu jadual dari 0 hingga 10000, satu jadual daripada 10000, satu jadual daripada 1 20000;

Model pengekstrakan HASH
  • Sistem pusat beli-belah secara amnya menggunakan pengguna dan pesanan sebagai jadual utama, dan kemudian menggunakan jadual yang berkaitan sebagai jadual tambahan Ini tidak akan menyebabkan masalah seperti transaksi merentas pangkalan data ID pengguna diambil, dan kemudian cincangan diambil dan diedarkan kepada pangkalan data yang berbeza

    Wilayah geografi
  • Sebagai contoh, Qiniu Cloud harus membahagikan perniagaan mengikut masa 6 bulan yang lalu atau walaupun setahun yang lalu dan meletakkannya ke dalam jadual lain, kebarangkalian data dalam jadual ini menjadi lebih kecil, jadi tidak perlu meletakkannya bersama "data panas". pemisahan data panas dan sejuk"
    .

Masalah yang dihadapi selepas sub-pangkalan data dan jadual

Sokongan transaksi

Selepas sub-pangkalan data dan jadual, ia menjadi Transaksi teragih. 分布式事务了。

如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。

多库结果集合并(group by,order by)

类似于group by,order by

Jika anda bergantung pada fungsi pengurusan transaksi yang diedarkan bagi pangkalan data itu sendiri untuk melaksanakan transaksi, anda akan membayar harga prestasi tinggi Jika aplikasi membantu mengawalnya, ia akan; membentuk transaksi dalam logik program, yang akan menyebabkan beban pengaturcaraan.

Berbilang set hasil pangkalan data digabungkan (kumpulan mengikut, susunan mengikut)

🎜Serupa dengan Kumpulkan mengikut, tertib mengikutPernyataan pengelompokan dan pengisihan sedemikian tidak boleh digunakan🎜🎜Cross-database join🎜🎜Selepas pangkalan data dibahagikan kepada jadual, operasi perkaitan antara jadual akan dihadkan, dan kami tidak boleh menyertai jadual di lokasi yang berbeza Jadual dalam sub-pangkalan data tidak boleh digabungkan dengan jadual dengan butiran sub-jadual yang berbeza Akibatnya, perniagaan yang boleh diselesaikan dengan satu pertanyaan mungkin memerlukan beberapa pertanyaan untuk diselesaikan. Penyelesaian kasar: jadual global: data asas, semua perpustakaan mempunyai salinan. Lebihan medan: Dengan cara ini, sesetengah medan tidak perlu disoal dengan menyertai. Pemasangan lapisan sistem: Tanya semuanya secara berasingan dan kemudian pasangkannya, yang lebih rumit. 🎜

Produk penyelesaian sub-pangkalan data dan sub-jadual

Terdapat banyak sub-pangkalan data dan perisian tengah sub-jadual di pasaran, antaranya yang berdasarkan proksi termasuk MySQL Proxy dan Amoeba, berdasarkan rangka kerja Hibernate ialah Hibernate Shard, berdasarkan jdbc Dangdangsharding-jdbc, pemalam Maven berdasarkan mybatis serupa dengan Mogujie TSharding, dengan menulis semula kelas templat ibatis spring Klien Cobar. MySQL ProxyAmoeba, 基于Hibernate框架的是Hibernate Shards,基于jdbc的有当当sharding-jdbc, 基于mybatis的类似maven插件式的有蘑菇街的蘑菇街TSharding, 通过重写spring的ibatis template类的Cobar Client

还有一些大公司的开源产品:

Hari ini saya akhirnya mengetahui sub-pangkalan data MySQL dan sub-jadual, jadi saya boleh membual tentangnya dalam temu bual!


我是程序员青戈,一个爱生活、爱分享的90后程序员。


本期关于Mysql分库分表的介绍和解决方案介绍到这里,希望能帮助到大家,后续更多Java面试类的文章请持续关注公众号Java学习指南Terdapat juga produk sumber terbuka daripada beberapa syarikat besar:

Hari ini saya akhirnya mengetahui sub-pangkalan data MySQL dan sub-jadual, jadi saya boleh membual tentangnya dalam temu bual!🎜SayaProgrammer Qingge, seorang pengaturcara pasca 90-an yang sukakan kehidupan dan perkongsian. 🎜


Isu ini memperkenalkan sub-pangkalan data dan sub-jadual Mysql Penyelesaiannya diperkenalkan di sini, saya harap ia dapat membantu semua orang Sila teruskan memberi perhatian kepada akaun rasmi untuk lebih banyak artikel temuduga Java pada masa hadapanPanduan Belajar Java🎜. 🎜🎜

Atas ialah kandungan terperinci Hari ini saya akhirnya mengetahui sub-pangkalan data MySQL dan sub-jadual, jadi saya boleh membual tentangnya dalam temu bual!. 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
Tempat Mysql: Pangkalan Data dan PengaturcaraanTempat Mysql: Pangkalan Data dan PengaturcaraanApr 13, 2025 am 12:18 AM

Kedudukan MySQL dalam pangkalan data dan pengaturcaraan sangat penting. Ia adalah sistem pengurusan pangkalan data sumber terbuka yang digunakan secara meluas dalam pelbagai senario aplikasi. 1) MySQL menyediakan fungsi penyimpanan data, organisasi dan pengambilan data yang cekap, sistem sokongan web, mudah alih dan perusahaan. 2) Ia menggunakan seni bina pelanggan-pelayan, menyokong pelbagai enjin penyimpanan dan pengoptimuman indeks. 3) Penggunaan asas termasuk membuat jadual dan memasukkan data, dan penggunaan lanjutan melibatkan pelbagai meja dan pertanyaan kompleks. 4) Soalan -soalan yang sering ditanya seperti kesilapan sintaks SQL dan isu -isu prestasi boleh disahpepijat melalui arahan jelas dan log pertanyaan perlahan. 5) Kaedah pengoptimuman prestasi termasuk penggunaan indeks rasional, pertanyaan yang dioptimumkan dan penggunaan cache. Amalan terbaik termasuk menggunakan urus niaga dan preparedStatemen

Mysql: Dari perniagaan kecil ke perusahaan besarMysql: Dari perniagaan kecil ke perusahaan besarApr 13, 2025 am 12:17 AM

MySQL sesuai untuk perusahaan kecil dan besar. 1) Perniagaan kecil boleh menggunakan MySQL untuk pengurusan data asas, seperti menyimpan maklumat pelanggan. 2) Perusahaan besar boleh menggunakan MySQL untuk memproses data besar dan logik perniagaan yang kompleks untuk mengoptimumkan prestasi pertanyaan dan pemprosesan transaksi.

Apa yang dibaca oleh Phantom dan bagaimana InnoDB menghalang mereka (kunci seterusnya)?Apa yang dibaca oleh Phantom dan bagaimana InnoDB menghalang mereka (kunci seterusnya)?Apr 13, 2025 am 12:16 AM

InnoDB secara berkesan menghalang pembacaan hantu melalui mekanisme utama. 1) Kekunci seterusnya menggabungkan kunci baris dan kunci jurang untuk mengunci rekod dan jurang mereka untuk mengelakkan rekod baru daripada dimasukkan. 2) Dalam aplikasi praktikal, dengan mengoptimumkan pertanyaan dan menyesuaikan tahap pengasingan, persaingan kunci dapat dikurangkan dan prestasi konkurensi dapat ditingkatkan.

MySQL: Bukan bahasa pengaturcaraan, tetapi ...MySQL: Bukan bahasa pengaturcaraan, tetapi ...Apr 13, 2025 am 12:03 AM

MySQL bukan bahasa pengaturcaraan, tetapi bahasa pertanyaannya SQL mempunyai ciri -ciri bahasa pengaturcaraan: 1. SQL menyokong penghakiman bersyarat, gelung dan operasi berubah -ubah; 2. Melalui prosedur, pencetus dan fungsi yang disimpan, pengguna boleh melakukan operasi logik yang kompleks dalam pangkalan data.

MySQL: Pengenalan kepada pangkalan data paling popular di duniaMySQL: Pengenalan kepada pangkalan data paling popular di duniaApr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

Kepentingan MySQL: Penyimpanan Data dan PengurusanKepentingan MySQL: Penyimpanan Data dan PengurusanApr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka yang sesuai untuk penyimpanan data, pengurusan, pertanyaan dan keselamatan. 1. Ia menyokong pelbagai sistem operasi dan digunakan secara meluas dalam aplikasi web dan bidang lain. 2. Melalui seni bina pelanggan-pelayan dan enjin penyimpanan yang berbeza, MySQL memproses data dengan cekap. 3. Penggunaan asas termasuk membuat pangkalan data dan jadual, memasukkan, menanyakan dan mengemas kini data. 4. Penggunaan lanjutan melibatkan pertanyaan kompleks dan prosedur yang disimpan. 5. Kesilapan umum boleh disahpepijat melalui pernyataan yang dijelaskan. 6. Pengoptimuman Prestasi termasuk penggunaan indeks rasional dan pernyataan pertanyaan yang dioptimumkan.

Mengapa menggunakan mysql? Faedah dan kelebihanMengapa menggunakan mysql? Faedah dan kelebihanApr 12, 2025 am 12:17 AM

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Huraikan mekanisme penguncian InnoDB (kunci yang dikongsi, kunci eksklusif, kunci niat, kunci rekod, kunci jurang, kunci seterusnya).Huraikan mekanisme penguncian InnoDB (kunci yang dikongsi, kunci eksklusif, kunci niat, kunci rekod, kunci jurang, kunci seterusnya).Apr 12, 2025 am 12:16 AM

Mekanisme kunci InnoDB termasuk kunci bersama, kunci eksklusif, kunci niat, kunci rekod, kunci jurang dan kunci utama seterusnya. 1. Kunci dikongsi membolehkan urus niaga membaca data tanpa menghalang urus niaga lain dari membaca. 2. Kunci eksklusif menghalang urus niaga lain daripada membaca dan mengubah suai data. 3. Niat Kunci mengoptimumkan kecekapan kunci. 4. Rekod Rekod Kunci Kunci Rekod. 5. Gap Lock Locks Index Rakaman Gap. 6. Kunci kunci seterusnya adalah gabungan kunci rekod dan kunci jurang untuk memastikan konsistensi data.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)