Rumah > Artikel > pangkalan data > Apakah perbezaan antara postgresql dan mysql
Perbezaan: 1. MySQL memulakan instance dengan melaksanakan arahan, manakala PG dimulakan dengan melaksanakan proses; 2. PG menyokong pandangan terwujud, tetapi MySQL tidak menyokong paparan terwujud; , manakala PG melakukan Sangat berskala 4. Sokongan fungsi prosedur disimpan PG adalah lebih baik daripada MySQL, dan ia mempunyai keupayaan untuk menyimpan rancangan pelaksanaan secara tempatan.
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
MySQL
MySQL agak muda, pertama kali muncul pada tahun 1994. Ia mendakwa sebagai pangkalan data sumber terbuka yang paling popular. MySQL ialah M dalam LAMP (pakej perisian untuk pembangunan web, termasuk Linux, Apache, dan Perl/PHP/Python). Kebanyakan aplikasi yang dibina pada tindanan LAMP menggunakan MySQL, termasuk aplikasi terkenal seperti WordPress, Drupal, Zend dan phpBB.
Dari awal, MySQL telah direka bentuk untuk menjadi bahagian belakang pelayan web yang pantas, menggunakan Kaedah Capaian Urutan Indeks (ISAM) yang pantas dan tidak menyokong ACID. Selepas pembangunan awal yang pesat, MySQL mula menyokong lebih banyak enjin storan dan melaksanakan ACID melalui enjin InnoDB. MySQL juga menyokong enjin storan lain, menyediakan fungsi jadual sementara (menggunakan enjin storan MEMORY), dan melaksanakan pangkalan data bacaan berkelajuan tinggi melalui enjin MyISAM Selain itu, terdapat enjin storan teras lain dan enjin pihak ketiga.
MySQL mempunyai dokumentasi yang sangat kaya, termasuk banyak manual rujukan percuma berkualiti tinggi, buku dan dokumen dalam talian, serta latihan dan sokongan daripada Oracle dan vendor pihak ketiga.
MySQL telah mengalami perubahan dalam pemilikan dan beberapa peristiwa dramatik dalam beberapa tahun kebelakangan ini. Ia pada asalnya dibangunkan oleh MySQL AB dan kemudian dijual kepada Sun untuk $1 bilion pada tahun 2008. Sun telah diperoleh oleh Oracle pada tahun 2010. Oracle menyokong berbilang versi MySQL: Standard, Perusahaan, Klasik, Kluster, Terbenam dan Komuniti. Sebahagian daripada mereka percuma untuk dimuat turun, manakala yang lain berbayar. Kod terasnya adalah berdasarkan lesen GPL dan lesen komersial tersedia untuk pembangun dan pengilang yang tidak mahu menggunakan lesen GPL.
Kini, terdapat banyak lagi pangkalan data untuk dipilih berdasarkan kod MySQL asal, kerana beberapa pembangun teras MySQL telah mengeluarkan garpu MySQL. Salah seorang pencipta MySQL asal, Michael "Monty" Widenius, nampaknya menyesal menjual MySQL kepada Sun, jadi dia membangunkan fork MySQL sendiri, MariaDB, yang percuma dan berlesen di bawah GPL. Drizzle, cawangan yang dicipta oleh pembangun MySQL terkenal Brian Aker, telah ditulis semula secara meluas, terutamanya dioptimumkan untuk aplikasi berbilang CPU, awan, rangkaian dan konkurensi tinggi.
PostgreSQL
PostgreSQL (pendek kata PG) mengebil dirinya sebagai pangkalan data sumber terbuka paling maju di dunia. Sesetengah peminat PostgreSQL mengatakan ia setanding dengan Oracle, tetapi tanpa tanda harga yang tinggi dan perkhidmatan pelanggan yang sombong. Ia mempunyai sejarah yang panjang, pada asalnya dibangunkan di University of California, Berkeley, pada tahun 1985 sebagai pengganti kepada pangkalan data Ingres.
PostgreSQL ialah projek sumber terbuka sepenuhnya dipacu komuniti yang diselenggarakan oleh lebih 1,000 penyumbang di seluruh dunia. Ia menyediakan versi tunggal yang berfungsi sepenuhnya, tidak seperti MySQL yang menyediakan berbilang edisi komuniti, edisi komersial dan edisi perusahaan yang berbeza. PostgreSQL dilesenkan di bawah lesen BSD/MIT liberal, dan organisasi boleh menggunakan, menyalin, mengubah suai dan mengedarkan semula kod tersebut selagi mereka memberikan notis hak cipta.
Kebolehpercayaan ialah keutamaan tertinggi PostgreSQL. Ia terkenal dengan kualiti kukuh dan kejuruteraan bunyinya, menyokong transaksi tinggi, aplikasi kritikal misi. Dokumentasi PostgreSQL sangat baik, dengan sejumlah besar manual dalam talian percuma dan manual rujukan yang diarkibkan untuk versi lama. Sokongan komuniti PostgreSQL sangat baik, begitu juga sokongan komersial daripada vendor bebas.
Ketekalan dan integriti data juga merupakan ciri keutamaan tinggi PostgreSQL. PostgreSQL menyokong sepenuhnya ciri ACID, menyediakan jaminan keselamatan yang kukuh untuk akses pangkalan data, dan menggunakan sepenuhnya alatan keselamatan perusahaan, seperti Kerberos dan OpenSSL. Anda boleh menentukan semakan anda sendiri untuk memastikan kualiti data berdasarkan peraturan perniagaan anda sendiri.
Antara banyak ciri pengurusan, pemulihan titik dalam masa (PITR) ialah ciri hebat Ia adalah ciri ketersediaan tinggi yang fleksibel yang menyediakan fungsi seperti mencipta sandaran panas dan syot kilat dan pemulihan untuk pemulihan kegagalan. kebolehan. Tetapi ini bukan semua PostgreSQL Projek ini juga menyediakan beberapa kaedah untuk mengurus PostgreSQL untuk mencapai ketersediaan tinggi, pengimbangan beban, replikasi, dll., supaya anda boleh menggunakan fungsi yang sesuai dengan keperluan khusus anda.
Perbezaan antara postgresql dan mysql
Ciri-ciri | MySQL | PostgreSQL |
Instance | Mulakan instance dengan melaksanakan arahan MySQL (mysqld). Satu contoh boleh mengurus satu atau lebih pangkalan data. Pelayan boleh menjalankan beberapa contoh mysqld. Pengurus contoh boleh memantau kejadian individu mysqld. |
Mulakan instance dengan melaksanakan proses Postmaster (pg_ctl). Satu contoh boleh mengurus satu atau lebih pangkalan data, yang membentuk gugusan. Kelompok ialah kawasan pada cakera yang dimulakan semasa pemasangan dan terdiri daripada direktori tempat semua data disimpan. Gunakan initdb untuk mencipta pangkalan data pertama. Berbilang contoh boleh dimulakan pada satu mesin. |
Pangkalan Data | Pangkalan data ialah koleksi objek bernama yang merupakan entiti yang berasingan daripada pangkalan data lain dalam contoh . Semua pangkalan data dalam contoh MySQL berkongsi katalog sistem yang sama. | Pangkalan data ialah koleksi objek yang dinamakan dan setiap pangkalan data ialah entiti yang berasingan daripada pangkalan data lain. Setiap pangkalan data mempunyai katalog sistem sendiri, tetapi semua pangkalan data berkongsi pg_databases. |
Penimbal Data | Tetapkan penimbal data melalui parameter konfigurasi innodb_buffer_pool_size. Parameter ini ialah bilangan bait dalam penimbal memori yang InnoDB gunakan untuk cache data jadual dan indeks. Pada pelayan pangkalan data khusus, parameter ini boleh ditetapkan sehingga 80% daripada memori fizikal mesin. | Penimbal_kongsi cache. Secara lalai 64 penimbal diperuntukkan. Saiz blok lalai ialah 8K. Cache penimbal boleh dikemas kini dengan menetapkan parameter shared_buffers dalam fail postgresql.conf. |
Sambungan pangkalan data | Pelanggan menggunakan pernyataan CONNECT atau USE untuk menyambung ke pangkalan data. nama pangkalan data mesti dinyatakan, dan id pengguna dan kata laluan boleh ditentukan. Gunakan peranan untuk mengurus pengguna dan kumpulan pengguna dalam pangkalan data. | Pelanggan menggunakan pernyataan sambung untuk menyambung ke pangkalan data Pada masa ini, nama pangkalan data mesti dinyatakan, dan id pengguna dan kata laluan juga boleh ditentukan. Gunakan peranan untuk mengurus pengguna dan kumpulan pengguna dalam pangkalan data. |
Pengesahan | MySQL menguruskan pengesahan di peringkat pangkalan data. Pada asasnya hanya pengesahan kata laluan disokong. | PostgreSQL menyokong pelbagai kaedah pengesahan: pengesahan amanah, pengesahan kata laluan, pengesahan Kerberos, Pengesahan berasaskan pengenalan, pengesahan LDAP, pengesahan PAM |
Penyulitan | Anda boleh menentukan kata laluan pada peringkat jadual untuk menyulitkan data. Anda juga boleh menggunakan fungsi AES_ENCRYPT dan AES_DECRYPT untuk menyulitkan dan menyahsulit data lajur. Penyulitan rangkaian boleh dicapai melalui sambungan SSL. | Lajur boleh disulitkan/nyahsulit menggunakan fungsi dalam perpustakaan pgcrypto. Penyulitan rangkaian boleh dicapai melalui sambungan SSL. |
Audit | Anda boleh grep log pertanyaan. | Anda boleh menggunakan pencetus PL/pgSQL pada jadual untuk pengauditan. |
Sandaran, pemulihan dan pengelogan | InnoDB menggunakan pengelogan tulis ke hadapan. Menyokong sandaran penuh dalam talian dan luar talian serta pemulihan ranap dan transaksi. Perisian pihak ketiga diperlukan untuk menyokong sandaran panas. | Kekalkan log tulis ke hadapan dalam subdirektori direktori data. Menyokong sandaran penuh dalam talian dan luar talian serta pemulihan ranap, titik dalam masa dan transaksi. Boleh menyokong sandaran panas. |
Kekangan | Sokong kunci primer, kunci asing, kekangan unik dan bukan nol. Kekangan semak diselesaikan tetapi tidak dikuatkuasakan. | Menyokong kunci utama, kunci asing, unik, bukan nol dan semak kekangan. |
Prosedur tersimpan dan fungsi yang ditentukan pengguna | menyokong penyataan CREATE PROSEDUR dan CREATE FUNGSI. Prosedur tersimpan boleh ditulis dalam SQL dan C. Fungsi yang ditentukan pengguna boleh ditulis dalam SQL, C, dan C. | Tiada prosedur tersimpan yang berasingan, semuanya dilaksanakan melalui fungsi. Fungsi yang ditentukan pengguna boleh ditulis dalam PL/pgSQL (bahasa prosedur khusus), PL/Tcl, PL/Perl, PL/Python, SQL dan C. |
Pencetus | Menyokong pencetus pra-baris, pencetus pasca baris dan pencetus pernyataan, pernyataan pencetus Ditulis dalam prosedur penyataan majmuk bahasa. | Menyokong pencetus pra-baris, pencetus pasca baris dan pencetus pernyataan, dan proses pencetus ditulis dalam C. |
Fail konfigurasi sistem | my.conf | Postgresql. conf |
Konfigurasi pangkalan data | my.conf | Postgresql. conf |
Fail sambungan pelanggan | my.conf | pg_hba .conf |
Sokongan XML | Sokongan XML terhad. | Sokongan XML terhad. |
Akses Data dan Pelayan Pengurusan | OPTIMASIKAN JADUAL - Tuntut semula ruang yang tidak digunakan Dan hapuskan pemecahan fail data myisamchk -analyze - Kemas kini statistik yang digunakan oleh pengoptimum pertanyaan (enjin storan MyISAM) mysql - Alat baris perintah Pentadbir MySQL - Alat GUI Pelanggan |
Vakum - Tuntut semula ruang yang tidak digunakan Analisis - Kemas kini statistik yang digunakan oleh pengoptimum pertanyaan psql - Alat baris perintah pgAdmin - Alat GUI Pelanggan |
Kawalan Concurrency | Menyokong kunci peringkat meja dan peringkat baris. Enjin storan InnoDB menyokong READ_COMMITTED, READ_UNCOMMITTED, REPEATABLE_READ dan SERIALIZABLE. Tetapkan tahap pengasingan pada tahap urus niaga menggunakan penyata SET TAHAP PENGASINGAN TRANSAKSI. |
Menyokong kunci peringkat meja dan peringkat baris. Tahap pengasingan ANSI yang disokong ialah Read Committed (lalai - anda boleh melihat petikan pangkalan data apabila pertanyaan dimulakan) dan Serialisasi (serupa dengan Bacaan Boleh Berulang - anda hanya boleh melihat hasil yang dilakukan sebelum transaksi dimulakan). Gunakan penyata SET TRANSAKSI untuk menetapkan tahap pengasingan pada tahap transaksi. Tetapkan pada tahap sesi menggunakan SET SESSION. |
VS | PostgreSQL | MySQL |
---|---|---|
开源 | PostgreSQL是一个免费的开源系统,它受PostgreSQL许可证(自由的开源许可证)的约束。 | MySQL属于Oracle旗下产品,并提供几种付费版本供用户使用 |
管理 | PostgreSQL是全球用户共同发展的产品 | MySQL是GNU通用公共许可以及各种专有协议条款下的产品 |
性能 | PostgreSQL适合对读写速度要求很高的大型系统中使用 | MySQL主要用于Web应用程序,该Web应用程序仅需要数据库来进行数据交易。 |
遵循ACID | PostgreSQL从头到尾都遵循ACID原则,并确保满足需求 | MySQL只有在使用InnoDB和NDB集群存储引擎时才符合ACID要求。 |
SQL 兼容性 | “从文档看,PostgreSQL是兼容大部分SQL的。 PostgreSQL支持SQL:2011的大多数功能。在核心一致性所需的179个强制性功能中,PostgreSQL至少兼容160个。此外,还有一系列受支持的可选功能。” | “从文档看,MySQL在某些版本是兼容部分SQL。 我们对该产品的主要目标之一是继续努力达到SQL标准的要求,但又不牺牲速度或可靠性。我们可以添加SQL扩展或对非SQL功能的支持,如果这样可以极大地提高MySQL服务器在我们大部分用户群中的可用性。” |
支持平台 | PostgreSQL可以运行在Linux, Windows (Win2000 SP4 及以上),FreeBSD,OpenBSD,NetBSD , Mac OS X, AIX, IRIX ,Solaris和 Tu64. 也支持由技术巨头惠普开发的HP-UX OS,以及开源的Unix OS。 | MySQL可以运行在Oracle Solaris,Microsoft Windows, Linux Mac OS X。MySQL扩展了对开源FreeBSD OS的支持 |
编程语言支持 | PostgreSQL是用C语言编写的,它支持多种编程语言,最突出的C/C , Delphi, JavaScript, Java, Python, R , Tcl , Go, Lisp, Erlang和.Net. | PostgreSQL是用C和C 编写的,它支持C/C , Erlang,PHP,Lisp,和Go, Perl,Java, Delphi, R ,和 Node.js. |
物化视图 | PostgreSQL支持物化视图 | MySQL不支持物化视图 |
数据备份 | PostgreSQL支持主备复制,并且还可以通过实现第三方扩展来处理其他类型的复制 | MySQL支持主备复制,其中每个节点都是主节点,并且有权更新数据 |
可拓展性 | PostgreSQL是高度可扩展的,您可以添加和拥有数据类型,运算符,索引类型和功能语言。 | MySQL不支持拓展性。 |
访问方法 | PostgreSQL支持所有标准。 | MySQL支持所有标准。 |
社区支持 | PostgreSQL有一个活跃的社区支持,该社区帮助改善现有功能,其富有创造力的提交者竭尽全力确保该数据库保持最新的功能和最大的安全性,成为最先进的数据库。 | MySQL也有一个庞大的追随者社区,这些社区贡献者,特别是在被Oracle收购之后,主要关注一些偶尔出现的新功能,并维护现有功能。 |
安全性 | PostgreSQL为连接提供本机SSL支持,以加密客户端/服务器通信。 PSQL还具有行级安全性。 | MySQL是高度安全的,并且包含多个安全功能。 |
Kelebihan PostgreSQL berbanding MySQL
Pelaksanaan standard SQL adalah lebih baik daripada MySQL, dan pelaksanaan fungsinya lebih rapi
Sokongan fungsi prosedur tersimpan adalah lebih baik daripada MySQL, dan ia mempunyai keupayaan untuk menyimpan rancangan pelaksanaan secara setempat
Sokongan untuk sambungan jadual adalah lebih lengkap; , dan fungsi pengoptimum adalah lebih lengkap Ia menyokong banyak jenis indeks dan mempunyai keupayaan pertanyaan kompleks yang kuat; , yang boleh menyokong jumlah data yang lebih besar daripada MySQL.
Replikasi primer dan sekunder PG ialah replikasi fizikal Berbanding dengan replikasi logik berasaskan binlog MySQL, ketekalan data lebih dipercayai, prestasi replikasi lebih tinggi dan ia mempunyai kesan yang kurang pada prestasi hos. .
Mekanisme pemalam enjin storan MySQL mempunyai masalah mekanisme penguncian kompleks yang menjejaskan konkurensi, tetapi PG tidak wujud.
mekanisme MVCC innodb berdasarkan pelaksanaan segmen rollback, berbanding PG The XID- mekanisme MVCC berasaskan, yang menyimpan data lama dan baharu bersama-sama, adalah dominan. Data baharu dan lama disimpan bersama, dan VACUUM perlu dicetuskan dengan kerap, yang akan membawa IO berlebihan dan objek pangkalan data mengunci overhed, menyebabkan keupayaan serentak keseluruhan pangkalan data berkurangan. Selain itu, jika VACUUM tidak dibersihkan dalam masa, ia juga boleh menyebabkan pengembangan data;
MySQL menggunakan indeks untuk menyusun jadual ini sangat sesuai untuk pertanyaan dan operasi memadam padanan kunci utama, tetapi ia tidak menjejaskan struktur jadual Terdapat kekangan dalam reka bentuk
Pengoptimum MySQL agak mudah, dan pelaksanaan jadual sistem, pengendali dan jenis data. adalah sangat diperkemas, yang sangat sesuai untuk operasi pertanyaan mudah;
Pelaksanaan jadual partition MySQL adalah lebih baik daripada pelaksanaan partition PG berdasarkan jadual warisan, yang terutamanya ditunjukkan dalam perbezaan yang besar dalam prestasi pemprosesan apabila bilangan partition mencecah ribuan atau puluhan ribu.
Mekanisme pemalam enjin storan MySQL menjadikan senario aplikasinya lebih meluas Sebagai contoh, selain innodb sesuai untuk senario pemprosesan transaksi, myisam sesuai untuk senario pertanyaan data statik.
[Cadangan berkaitan:
tutorial video mysqlAtas ialah kandungan terperinci Apakah perbezaan antara postgresql dan mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!