Rumah pembangunan bahagian belakang tutorial php MySQL加上事务处理等于MaxSQL_PHP教程

MySQL加上事务处理等于MaxSQL_PHP教程

Jul 13, 2016 pm 05:25 PM
mysql pemprosesan transaksi wujud besar terbuka Kod sumber daripada sama rata

去年八月在 OReilly 赞助的开放源码大会上,MySQL 开发人员Monty Widenius 宣布了一项新的项目叫做MaxSQL,一个目前十分流行的MySQL 数据库的增强版本。最重要的是MaxSQL 结合了来自Sleepycat软件的最新的 Berkeley DB 库,因此程序以另外一种表类型支持事务处理。

  目前,你还不能直接安装MaxSQL的二进制版本,你必须从MySQL 3.23 beta 的源码来编译,但是当你看到这篇文章的时候,你应该可以从MySQL 网站下载MaxSQL了。 想要自己编译最新的版本的话,请看“编译自己的MaxSQL”一文,在那里我详细叙述了编译步骤。

什么是事务?

  为什么增加了一个事务安全的表需要命名一个新的项目名字呢?或许我应该提一下MySQL 的主要开发者 Monty Widenius 有两个孩子,一个叫My ,另一个叫Max,哥儿俩相互竞争不说,另外还有一个对手PostgreSQL。

  关于PostgreSQL,我们本期的另外一篇文章"PostgreSQL为电子商务加了一个等级" 会有提到,是一个对我们都有利的竞争者,因为每一个项目组都在克服自己产品中的弱点。而MaxSQL 所作的就是消除这两个对手之间的 差距。MySQL 有很快的读操作,因此很受Web 开发者欢迎,因为Web 内容 以读为主。但是,另外一方面,因为MySQL 使用了ISAM 表,所以写操作时,必须给整个表加锁,这样减慢了更新和插入的操作,当流量很大时会是一个很大的问题。当每秒请求数目剧增时,写操作在服务器中排队,Web 页面会发生超时错误。

  使用了 MaxSQL后,你依然可以建立普通的快速ISAM 类型表,也可以在某个表需要使用事务安全特性时,选择使用新的BDB 类型。

  BDB 表在写操作时要比 ISAM 快得多。因为他们不使用表一级的锁。 另外,对于任何事务表的处理都有日志记录以防硬件失效。日志允许 COMMIT/ROLLBACK 操作。例如,你在一个在线商店下订单, 订单会在"order" 表中记录一行。系统会从"inventory"表中的某一行中 减掉对应的库存货物数量。如果使用MySQL的ISAM表,一个CGI 程序需要执行以下六步:



  LOCK inventory table
  LOCK order table
  UPDATE inventory table
  UPDATE order table
  UNLOCK inventory table
  UNLOCK order table

  如果有人锁住了任何一个表,这个 CGI 程序就必须等待。一旦两个都加锁以后,CGI 才可以更新他们,然后释放锁。如果在第三步失败的话(例如服 务器宕机),order 表就不会被更新而你的库存已经减了下来。

  使用 MaxSQL BDB 事务安全类型的表之后,只需要四步:

  BEGIN
  UPDATE inventory table
  UPDATE order table
  COMMIT

  你不必等待释放锁,所有的四个步骤是一个事务。只要读到BEGIN 语句, MySQL 就把命令读入缓冲,一直到看到COMMIT 命令为止。因此,所有的操作在同一时间发生。即使有意外操作发生(磁盘满或者掉电),也不会因此而毁掉数据库。在一个非事务安全的系统里,如果第三步失败的话, 数据库就会发生不一致,而在BDB 表中,如果对order 表操作失败MySQL 会恢复对库存表的操作,这样不会发生不一致的情况了。

  许多网站采用早期版本的 MySQL来实现表锁,但是采用 MaxSQL 以后,会很容易和快速。

还有什么新式武器?

  除了因为 BDB 表需要把 MySQL 转变成 MaxSQL之外,另外还有一些 重要的改变。其中一个秘密武器就是数据库复制,你可以把一个服务器作为 主服务器,而配置任意数目的从服务器,这样对主服务器的更新也将拷贝到 从服务器。为了使用这样的系统,改变你的CGI 脚本,让他们知道MySQL 从 服务器的存在。这个脚本也会在不能连接上主服务器时,切换到从服务器。

  需要注意的是,这样的系统对很少写操作的数据库才有效,因为复制不是同步的。如果有人在主服务器上启动一个事务,而在事务结束之前服务器死机的话,主服务器没有时间把更新复制到从服务器。这样,这种系统不合适作电子商务,而且,CGI 脚本总是首先连接主服务器,所以不是负载平衡的系统。

  另外一个重大改进是 ISAM 类型表的格式。缺省的表类型现在叫作 MyISAM。 这种类型的表能处理到每个表最大2GB ,而且可以跨平台。 你可以从Linux 拷贝一个MyISAM 文件到Solaris 而不需要任何转换。

结论:

  MaxSQL 可以作为价格昂贵的商务系统的一个很优秀的替代品。很多系统不需要处理很多的事务交易,而要求安装Oracle。而MaxSQL 提供的事务安全的表,使更新数据库的编程工作更加轻松。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/532068.htmlTechArticle去年八月在 OReilly 赞助的开放源码大会上,MySQL 开发人员Monty Widenius 宣布了一项新的项目叫做MaxSQL,一个目前十分流行的MySQL 数据库的增强...
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

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 lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MySQL: Kemudahan Pengurusan Data untuk Pemula MySQL: Kemudahan Pengurusan Data untuk Pemula Apr 09, 2025 am 12:07 AM

MySQL sesuai untuk pemula kerana mudah dipasang, kuat dan mudah untuk menguruskan data. 1. Pemasangan dan konfigurasi mudah, sesuai untuk pelbagai sistem operasi. 2. Menyokong operasi asas seperti membuat pangkalan data dan jadual, memasukkan, menanyakan, mengemas kini dan memadam data. 3. Menyediakan fungsi lanjutan seperti menyertai operasi dan subqueries. 4. Prestasi boleh ditingkatkan melalui pengindeksan, pengoptimuman pertanyaan dan pembahagian jadual. 5. Sokongan sokongan, pemulihan dan langkah keselamatan untuk memastikan keselamatan data dan konsistensi.

Bolehkah saya mengambil kata laluan pangkalan data di Navicat? Bolehkah saya mengambil kata laluan pangkalan data di Navicat? Apr 08, 2025 pm 09:51 PM

Navicat sendiri tidak menyimpan kata laluan pangkalan data, dan hanya boleh mengambil kata laluan yang disulitkan. Penyelesaian: 1. Periksa Pengurus Kata Laluan; 2. Semak fungsi "Ingat Kata Laluan" Navicat; 3. Tetapkan semula kata laluan pangkalan data; 4. Hubungi pentadbir pangkalan data.

Cara Membuat Premium Navicat Cara Membuat Premium Navicat Apr 09, 2025 am 07:09 AM

Buat pangkalan data menggunakan Navicat Premium: Sambungkan ke pelayan pangkalan data dan masukkan parameter sambungan. Klik kanan pada pelayan dan pilih Buat Pangkalan Data. Masukkan nama pangkalan data baru dan set aksara yang ditentukan dan pengumpulan. Sambung ke pangkalan data baru dan buat jadual dalam penyemak imbas objek. Klik kanan di atas meja dan pilih masukkan data untuk memasukkan data.

Cara menyalin jadual di mysql Cara menyalin jadual di mysql Apr 08, 2025 pm 07:24 PM

Menyalin jadual di MySQL memerlukan membuat jadual baru, memasukkan data, menetapkan kunci asing, menyalin indeks, pencetus, prosedur tersimpan, dan fungsi. Langkah -langkah khusus termasuk: mewujudkan jadual baru dengan struktur yang sama. Masukkan data dari jadual asal ke dalam jadual baru. Tetapkan kekangan utama asing yang sama (jika jadual asal mempunyai satu). Buat indeks yang sama. Buat pencetus yang sama (jika jadual asal mempunyai satu). Buat prosedur atau fungsi yang disimpan yang sama (jika jadual asal digunakan).

Bagaimana untuk melihat kata laluan pangkalan data di Navicat untuk MariaDB? Bagaimana untuk melihat kata laluan pangkalan data di Navicat untuk MariaDB? Apr 08, 2025 pm 09:18 PM

Navicat untuk MariaDB tidak dapat melihat kata laluan pangkalan data secara langsung kerana kata laluan disimpan dalam bentuk yang disulitkan. Untuk memastikan keselamatan pangkalan data, terdapat tiga cara untuk menetapkan semula kata laluan anda: Tetapkan semula kata laluan anda melalui Navicat dan tetapkan kata laluan yang kompleks. Lihat fail konfigurasi (tidak disyorkan, risiko tinggi). Gunakan alat baris perintah sistem (tidak disyorkan, anda perlu mahir dalam alat baris arahan).

Cara Melaksanakan SQL di Navicat Cara Melaksanakan SQL di Navicat Apr 08, 2025 pm 11:42 PM

Langkah -langkah untuk melaksanakan SQL di Navicat: Sambungkan ke pangkalan data. Buat tetingkap editor SQL. Tulis pertanyaan SQL atau skrip. Klik butang Run untuk melaksanakan pertanyaan atau skrip. Lihat hasilnya (jika pertanyaan dilaksanakan).

Cara Membuat Sambungan Baru ke MySQL di Navicat Cara Membuat Sambungan Baru ke MySQL di Navicat Apr 09, 2025 am 07:21 AM

Anda boleh membuat sambungan MySQL baru di Navicat dengan mengikuti langkah -langkah: Buka aplikasi dan pilih Sambungan Baru (Ctrl N). Pilih "MySQL" sebagai jenis sambungan. Masukkan nama host/alamat IP, port, nama pengguna, dan kata laluan. (Pilihan) Konfigurasikan pilihan lanjutan. Simpan sambungan dan masukkan nama sambungan.

Navicat tidak dapat menyambung ke MySQL/MariaDB/PostgreSQL dan pangkalan data lain Navicat tidak dapat menyambung ke MySQL/MariaDB/PostgreSQL dan pangkalan data lain Apr 08, 2025 pm 11:00 PM

Alasan Biasa Mengapa Navicat tidak dapat menyambung ke pangkalan data dan penyelesaiannya: 1. Periksa status berjalan pelayan; 2. Periksa maklumat sambungan; 3. Laraskan tetapan firewall; 4. Konfigurasi akses jauh; 5. menyelesaikan masalah rangkaian; 6. Periksa keizinan; 7. Memastikan keserasian versi; 8. menyelesaikan masalah lain.

See all articles