Rumah > Artikel > pangkalan data > Apakah perbezaan antara postgresql dan mysql
Perbezaan: 1. PGSQL tidak mempunyai had bilangan teras CPU, tetapi mysql mempunyai had 2. PGSQL mempunyai sejumlah 255 parameter fail konfigurasi, dan MySQL mempunyai jumlah 707; . PGSQL menyokong maklumat statistik pelbagai medan, dan MySQL tidak menyokongnya;
Persekitaran pengendalian tutorial ini: sistem windows7, versi PostgreSQL 11&&MySQL5.7, komputer Dell G3.
PostgreSQL ialah sistem pengurusan pangkalan data perhubungan objek perisian percuma (ORDBMS) dengan ciri yang sangat lengkap.
PostgreSQL menyokong kebanyakan piawaian SQL dan menyediakan banyak ciri moden yang lain, seperti pertanyaan kompleks, kunci asing, pencetus, paparan, integriti transaksi dan menunggu kawalan serentak berbilang versi. Begitu juga, PostgreSQL boleh dilanjutkan dalam pelbagai cara, seperti dengan menambah jenis data baharu, fungsi, pengendali, fungsi agregat, kaedah indeks, bahasa prosedur, dsb. Di samping itu, kerana lesen yang fleksibel, sesiapa sahaja boleh menggunakan, mengubah suai dan mengedarkan PostgreSQL untuk sebarang tujuan secara percuma.
Perbandingan perbezaan antara postgresql dan mysql
Versi perbandingan: PostgreSQL 11 VS MySQL5.7 (enjin innodb) Oracle official edisi komuniti Status hak cipta: PostgreSQL 11 (percuma dan sumber terbuka), MySQL5.7 Oracle versi komuniti rasmi (percuma dan sumber terbuka)
1. Had CPU
PGSQL tidak mempunyai had teras CPU. Gunakan seberapa banyak teras CPU yang terdapat
MySQL boleh menggunakan CPU 128 teras, lebih daripada 128 teras tidak boleh digunakan
2 🎜>
PGSQL Terdapat 255 parameter secara keseluruhan, dan kira-kira 80 digunakan Parameternya agak stabil Anda juga boleh memulakan pangkalan data versi besar semasa menggunakan fail konfigurasi versi besar sebelumnya MySQL mempunyai sejumlah 707 parameter, dan kira-kira 80 digunakan, parameter sentiasa meningkat, walaupun versi kecil akan meningkatkan parameter, dan beberapa parameter akan tidak serasi antara versi besar3. kebergantungan alat pihak
PGSQL hanya memerlukan kluster ketersediaan tinggi untuk bergantung pada middleware pihak ketiga, seperti patroni etcd, repmgr
Kebanyakan operasi MySQL bergantung pada alatan pihak ketiga percona (percona-toolkit, XtraBackup), dan terdapat terlalu banyak arahan alat , kos pembelajaran adalah tinggi, dan kluster ketersediaan tinggi juga memerlukan perisian tengah pihak ketiga Kluster MGR rasmi belum matang lagi4. Prinsip asas replikasi induk-hamba ketersediaan tinggi
Replikasi penstriman fizik PGSQL, replikasi fizikal, adalah sama seperti pencerminan SQL Server/AlwaysOn kemungkinan menyebabkan ketidakkonsistenan dari segi prestasi dan kebolehpercayaan, replikasi fizikal mengalahkan replikasi logik dan mudah untuk dikekalkan
Replikasi master-slave MySQL ialah Replikasi logik, (tetapan parameter yang salah seperti sql_log_bin, binlog_format, dsb. akan membawa kepada ketidakkonsistenan tuan-hamba) Kecekapan replikasi selari urus niaga besar adalah rendah Untuk perniagaan penting, anda perlu bergantung pada alat pt-table-checksum dan pt-table-sync bagi percona-toolkit untuk membandingkan jumlah secara kerap. . Membaiki ralat replikasi tuan-hamba yang konsisten Apabila ralat replikasi tuan-hamba yang serius berlaku, adalah perlu untuk mewujudkan semula replikasi logik master-hamba dan tidak menghalang dua pangkalan data yang tidak konsisten daripada mewujudkan hubungan replikasi5 Status baca sahaja pangkalan data hamba
Sistem PGSQL secara automatik menetapkan pangkalan data hamba kepada baca sahaja secara lalai, tiada campur tangan manual diperlukan dan penyelenggaraan adalah mudah
Pangkalan data hamba MySQL perlu menetapkan parameter super_read_only=on secara manual untuk menetapkan pangkalan data hamba kepada baca-sahaja Parameter super_read_only ialah pepijat, pautan: https://baijiahao.baidu.com/s?id=. 1636644783594388753&wfr=spider&for=pc6 Cawangan versi
PGSQL hanya mempunyai versi komuniti, Tiada versi cawangan lain dibangunkan dan diselenggara secara rasmi . Versi komuniti mempunyai semua fungsi Tidak seperti SQL Server dan MySQL, yang mempunyai versi standard, versi perusahaan, versi klasik, versi komuniti, versi pembangunan, dan versi web, ia tersedia di dalam dan di luar negara pada PGSQL, seperti Enterprise DB, Pangkalan Data Hangao, dll. Sudah tentu, ini hanyalah perkembangan sekunder dan tidak dianggap sebagai cawangan bebas
Disebabkan sebab sejarah, MySQL dibahagikan kepada tiga versi cawangan , cawangan MariaDB, Percona cawangan, cawangan rasmi Oracle Setakat ini, cawangan pada asasnya tidak serasi antara satu sama lain juga mempunyai versi, yang dibahagikan kepada edisi standard, edisi perusahaan, edisi klasik dan edisi komuniti7. . Sokongan ciri SQL
Sokongan ciri PGSQL SQL menyokong 94 jenis, dengan sokongan sintaks SQL yang paling lengkap, contohnya: sokongan untuk ungkapan jadual biasa (DENGAN pertanyaan)
Sokongan ciri MySQL 36 situasi disokong, dan sokongan sintaks SQL adalah agak lemah. Contohnya, ungkapan jadual biasa (dengan pertanyaan) tidak disokong untuk perbandingan sokongan ciri SQL, sila rujuk: http://www.sql-workbench.net /dbms_comparison.html8. Keselamatan replikasi induk-hamba
Replikasi strim segerak PGSQL, penyegerakan kuat (penggunaan jarak jauh), keselamatan tinggi, tiada kehilangan data strim segerak PGSQL replikasi: semua hamba Jika pangkalan data tidak berfungsi, pangkalan data induk akan dimogokkan Pangkalan data induk tidak boleh bertukar secara automatik kepada replikasi penstriman tak segerak (mod tak segerak Ini perlu diselesaikan dengan menambah bilangan pangkalan data hamba).
Secara amnya, persekitaran pengeluaran mempunyai sekurang-kurangnya dua pustaka hamba Penyelesaian manual: ubah suai parameter synchronous_standby_names ='' dalam pustaka utama PG, dan laksanakan perintah: pgctl reload. Data tuan-hamba benar-benar konsisten Tinggi Prasyarat pertama untuk penukaran yang tersedia.Jadi boleh difahami bahawa PGSQL memilih pangkalan data induk untuk menyerang MySQL meningkatkan replikasi separa segerak
Versi Mysql5.7 mempertingkatkan separa penyegerakan untuk memastikan tiada data yang hilang semasa replikasi induk-hamba .7 parameter berkaitan replikasi separa segerak: parameter rpl_semi_sync_master_wait_for_slave_count Tunggu sekurang-kurangnya berapa banyak perpustakaan hamba untuk menerima binlog sebelum pustaka induk melakukan transaksi
Biasanya ditetapkan kepada 1, parameter prestasi tertinggi rpl_semi_llisecond_master_timeout berapa lama menunggu , perpustakaan hamba secara automatik akan bertukar kepada mod tak segerak jika tiada respons
General Set kepada infinite untuk menghalang pangkalan data induk daripada bertukar secara automatik kepada mod tak segerak Semua pangkalan data induk akan dihidupkan mogok
kerana ia tidak boleh menerima sebarang paket respons daripada pangkalan data hamba: ubah suai parameter rpl_semi_sync_master_wait_for_slave_count dalam pangkalan data induk MySQL =0
9
PGSQL menyokong maklumat statistik berbilang medan
MySQL tidak menyokong maklumat statistik berbilang medan
Jenis indeks
jenis indeks berbilang PGSQL (btree, hash, gin, gist, sp-gist, brin, bloom, rum, zombodb, bitmap, indeks separa, Indeks ungkapan)
Indeks MySQLbtree, indeks teks penuh ( tidak cekap), indeks ekspresi (perlu mencipta lajur maya), indeks cincang hanya dalam jadual memori
11 Algoritma sambungan jadual fizikal
PGSQL menyokong gabungan gelung bersarang. , hash join, merge join
MySQL hanya menyokong nested-loop join
12 Subquery and view performance
PGSQL subquery, view optimization, relatif. prestasi tinggi
Syarat predikat paparan MySQL mempunyai banyak sekatan tolak ke bawah, dan subkueri mempunyai banyak sekatan tarik naik
13 Kompilasi tepat pada masa rancangan pelaksanaan
PGSQL menyokong kompilasi pelan pelaksanaan JIT tepat dalam masa, menggunakan pengkompil LLVM
MySQL tidak menyokong kompilasi pelan pelaksanaan tepat dalam masa
14. Pertanyaan Paralelisme
Pertanyaan selari PGSQL (kaedah pengoptimuman pertanyaan selari berbilang), pertanyaan selari biasanya dilihat dalam pangkalan data komersial, ia adalah fungsi wajaran berat
MySQL adalah terhad dan hanya menyokong pertanyaan selari kunci utama
15 paparan terwujud
PGSQL menyokong pandangan terwujud
MySQL tidak menyokong pandangan terwujud
16. Fungsi pemalam
PGSQL menyokong fungsi pemalam, yang boleh memperkayakan fungsi PGSQL, pemalam geografi GIS, pemalam pangkalan data siri masa, pemalam pelaksanaan vektor, dll.MySQL tidak menyokong fungsi pemalam17 kekangan semak
PGSQL menyokong kekangan semak MySQL tidak. tidak menyokong kekangan semak. Anda boleh menulis kekangan semak, tetapi enjin storan akan mengabaikan kesannya, jadi kekangan semak tidak Berfungsi (sokongan mariadb)18 GPU dipercepatkan PGSQL boleh menggunakan GPU untuk mempercepatkan kelajuan pelaksanaan SQL
MySQL tidak menyokong SQL dipercepatkan GPU Kelajuan pelaksanaan bagi Storan maksimum medan varchar dan jenis teks ialah 1GBJenis data MySQL ialah tidak cukup kaya20 Pertanyaan silang pangkalan data
PGSQL tidak menyokong pertanyaan silang pangkalan data Ini sama seperti sebelum Oracle 12C MySQL boleh pertanyaan silang pangkalan data21 Sandaran dan pemulihan
Sandaran dan pemulihan PGSQL sangat mudah, dan operasi pemulihan titik dalam masa lebih pantas daripada SQL. Pelayan lebih ringkas, sandaran arkib wal (incremental) Jika anda mempunyai kluster induk-hamba PGSQL tiga nod, anda boleh melakukan sandaran penuh dan sandaran arkib pada salah satu nod sandaran dan pemulihan agak mudah. Sandaran binlog sandaran penuh (incremental) memerlukan alat XtraBackup untuk sandaran fizikal MySQL sendiri tidak menyokong langkah-langkah operasi pemulihan Point-in-point
22. Paparan prestasi
PGSQL perlu memasang pemalam pg_stat_statements Pemalam pg_stat_statements menyediakan paparan prestasi yang kaya: seperti: menunggu acara, statistik sistem. dan lain-lain. Kelemahannya ialah memasang pemalam memerlukan memulakan semula pangkalan data dan mengumpul maklumat prestasi daripada pangkalan data Anda perlu melaksanakan perintah: cipta perintah pg_stat_statements sambungan, jika tidak, tiada maklumat prestasi akan dikumpul, yang menyusahkan<.>MySQL disertakan dengan perpustakaan PS, banyak fungsi tidak dihidupkan secara lalai, dan menghidupkan fungsi paparan prestasi perpustakaan PS mempunyai kesan ke atas prestasi ( Contohnya: pepijat OOM yang disebabkan oleh penggunaan memori)
23. Kaedah pemasanganPGSQL mempunyai pakej rpm, pakej deb, dan lain-lain untuk pelbagai platform Berbanding dengan MySQL, ia tidak mempunyai pakej binari secara amnya masa pemasangan akan menjadi lebih lama dan akan terdapat lebih banyak arahan untuk dilaksanakan MySQL mempunyai pakej rpm, pakej deb, dll. untuk pelbagai platform disusun dan dipasang, dan pakej binari dipasang biasanya digunakan. Pemasangan yang mudah dan pantas
24 Operasi DDLPGSQL menambah medan dan menukar panjang jenis medan panjang ubah tanpa mengunci jadual tidak diperlukan dengan bantuan alat pihak ketiga, dan seperti pangkalan data komersial, operasi DDL boleh digulung semula untuk memastikan konsistensi transaksi MySQL kerana kebanyakan operasi DDL akan mengunci jadual, seperti menambah medan dan menukar. panjang jenis medan pembolehubah-panjang, Oleh itu, anda perlu menggunakan alat pt-online-schema-change dalam percona-toolkit untuk menyelesaikan operasi dan meminimumkan kesan, terutamanya untuk operasi DDL pada jadual besar tidak boleh dilancarkan kembali
25 Versi Besar kelajuan keluaranPGSQLPGSQL mengeluarkan versi utama setiap tahun Ia boleh dimasukkan ke dalam persekitaran pengeluaran pada tahun kedua selepas versi utama dikeluarkan Kelajuan lelaran versi adalah sangat pantas Versi rasmi PGSQL 9.6 telah dilancarkan versi rasmi PGSQL 10 telah dilancarkan pada 2017. Versi rasmi PGSQL 11 telah dilancarkan pada 2017. Masa pelancaran: 2018 PGSQL 12 versi rasmi masa pelancaran: 2019
MySQL Biasanya mengambil masa 2 hingga 3 tahun untuk major versi MySQL yang akan dikeluarkan Secara amnya, versi utama hanya boleh dimasukkan ke dalam persekitaran pengeluaran pada tahun kedua selepas ia dikeluarkan untuk mengelakkan masalah, kelajuan pelepasan versi agak perlahan pada tahun 2010. Versi rasmi MySQL 5.6 telah dilancarkan pada tahun 2013. Versi rasmi MySQL 5.7 telah dilancarkan pada tahun 2015. Versi rasmi MySQL 8.0 telah dilancarkan pada tahun 2018.
Sintaks pengembalian
PGSQL menyokong sintaks pemulangan, klausa pemulangan menyokong DML untuk mengembalikan Resultsset, mengurangkan satu interaksi Pelayan DB
MySQL tidak Menyokong sintaks pemulangan
27. Seni bina dalaman
Seni bina berbilang proses PGSQL, bilangan sambungan serentak tidak boleh terlalu banyak, sama seperti Oracle Memandangkan ia sama dengan Oracle, terdapat banyak kaedah pengoptimuman Ia adalah juga sama, sebagai contoh: dayakan memori halaman yang besar
Seni bina berbilang benang MySQL Walaupun seni bina berbilang benang, terdapat had rasmi untuk bilangan sambungan adalah terhad, dan terdapat terlalu banyak utas Sebaliknya, sistem Kapasiti pemprosesan berkurangan Apabila bilangan sambungan bertambah, prestasi berkurangan Secara amnya, hanya 200 ~ 300 sambungan pangkalan data boleh diproses pada masa yang sama
28. Indeks berkelompok
PGSQL tidak menyokong indeks Berkelompok, disebabkan oleh mekanisme pelaksanaan MVCC PGSQL itu sendiriMySQL menyokong indeks berkelompok29. Fungsi penamatan transaksi terbiar
PGSQL menetapkan parameter idle_in_transaction_session_timeout untuk menamatkan transaksi terbiar Contohnya, jika anda terlupa menutup transaksi terbuka dalam kod aplikasi, PGSQL akan mengesan dan mematikan jenis ini secara automatik transaksi sesiMySQL tidak menyokong fungsi menamatkan transaksi terbiar30 Mengatasi jumlah data yang sangat besar
PGSQL tidak dapat mengatasinya. jumlah data yang sangat besar Disebabkan masalah reka bentuk MVCC PGSQL itu sendiri, kami hanya boleh mengharapkan pengoptimuman dalam versi utama berikutnya MySQL tidak dapat menampung jumlah data yang sangat besar, dan terdapat masalah. dengan seni bina MySQL sendiri31 Evolusi teragih
pangkalan data PGSQLHTAP: cockroachDB, Tencent Tbase sharding cluster: Postgres-XC, Postgres - Aspek ini tidak dilakukan dengan baik DBA tidak dapat melihat dengan jelas nama fail dan peraturan penamaan pangkalan data, bilangan fail dan saiz fail pada tahap sistem pengendalian (apabila pangkalan data dihentikan Sebaik sahaja fail sistem pengendalian hilang atau cakera keras). rosak, ia sangat sukar untuk dipulihkan, kerana saya tidak tahu namanya Peraturan penamaan/penyimpanan fail fizikal data jadual PGSQL ialah: di bawah ruang jadual, jika tiada ruang jadual dibuat, ia lalai kepada. ruang jadual lalai, iaitu folder asas, contohnya: /data/base/16454 /3599base: Folder fizikal di mana ruang jadual lalai pg_default terletak 16454: Oid pangkalan data di mana jadual terletak3599: Ia adalah oid daripada objek jadual Sudah tentu, apabila saiz jadual melebihi 1GB, berbilang fail fizikal akan dihasilkan, serta fail fsm jadual dan fail vm, jadi jadual besar sebenarnya mempunyai berbilang fail fizikal terlalu banyak kandungan susun atur fail data, anda boleh menyemak maklumat yang berkaitan Sudah tentu, ini tidak boleh dipersalahkan sepenuhnya Sebagai DBA, anda mesti sentiasa melakukan sandaran pangkalan data dan pemulihan bencana secara amnya sebagai pilihan terakhir data dengan jelas, dan sangat mudah untuk pemulihan media atau pemindahan ruang mejaReka bentuk kebenaran
PGSQLPGSQL agak rumit dari segi reka bentuk kebenaran Mengetepikan kebenaran contoh dan keizinan ruang jadual, tahap kebenaran PGSQL sedikit seperti SQL Server db=》schema=》objek tentang Oracle di sini Gunakan Oracle Untuk membuat analogi, sebelum ORACLE 12C, contoh dan pangkalan data adalah satu-satu, yang bermaksud bahawa satu contoh hanya boleh mempunyai satu pangkalan data boleh membuat pertanyaan merentasi pangkalan data mengikut kehendak PGSQL. Sebab untuk pertanyaan pangkalan data juga adalah sama -satu). Satu pangkalan data adalah bersamaan dengan satu kejadian, kerana PGSQL membenarkan berbilang kejadian, jadi Satu contoh PGSQL tidak dipanggil contoh, ia dipanggil gugusan, anda boleh menyemak maklumat PGSQL yang berkaitan . secara logik diasingkan antara satu sama lain perlu mengumpul prestasi daripada semua pangkalan data di bawah gugusan PGSQL, anda perlu melaksanakan perintah muat satu demi satu Contohnya, pertanyaan silang pangkalan data memerlukan pemalam dblink atau pemalam fdw antara dua kejadian. Ia telah menjangkau kejadian, jadi pemalam dblink atau pemalam fdw diperlukan, jadi operasi kebenaran juga dilakukan berdasarkan pangkalan data adalah seperti hierarki kebenaran SQL Server db=》schema=》objek, tetapi ia sebenarnya lebih rumit daripada SQL Server Selain itu, jadual yang baru dibuat perlu diberi kuasa secara berasingan dalam PGSQL. Peranan dan pengguna adalah sama untuk pengguna baru Dia berkata bahawa kadang-kadang dia tidak dapat membezakannya, dan dia tidak tahu cara menggunakan peranan, jadi PGSQL benar-benar rumit dari segi reka bentuk kebenaran
MySQL menggunakan 5 jadual kebenaran di bawah perpustakaan mysql untuk melakukan pemetaan kebenaran, yang mudah Jelas, satu-satunya masalah ialah kekurangan keizinan peranan jadual pengguna db table table tables_priv table columns_priv table
34 Sejarah Pembangunan
PGSQL Pada tahun 1995, pembangun Andrew Yu dan Jolly Chen menambahkan program terjemahan SQL (Bahasa Pertanyaan Berstruktur, Bahasa Pertanyaan Berstruktur) ke Postgres Versi ini dipanggil Postgres95 dan dikeluarkan dalam komuniti sumber terbuka. Pada tahun 1996, perubahan besar dibuat kepada Postgres95 sekali lagi, dan ia dinamakan PostgresSQL versi 6.0 dan dikeluarkan Nama PostgresSQL telah dimuktamadkan dari tahun 1995, ia mempunyai sejarah selama 24 tahun
MySQL telah dilancarkan. 1996 Pada tahun 2009, MySQL 1.0 telah dikeluarkan hanya untuk sekumpulan kecil orang dan bersamaan dengan keluaran dalaman. Pada Oktober 1996, MySQL 3.11.1 telah dikeluarkan (MySQL tidak mempunyai versi 2.x Pada mulanya, ia hanya menyediakan versi binari di bawah sistem pengendalian Solaris Sebulan kemudian, versi Linux muncul dari tahun 1996). ia mempunyai sejarah kira-kira 23 tahun
[Cadangan berkaitan: tutorial video mysql]
Atas ialah kandungan terperinci Apakah perbezaan antara postgresql dan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!