MySQL加上事务处理等于MaxSQL_PHP教程
去年八月在 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 提供的事务安全的表,使更新数据库的编程工作更加轻松。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

MySQL和phpMyAdmin是強大的數據庫管理工具。 1)MySQL用於創建數據庫和表、執行DML和SQL查詢。 2)phpMyAdmin提供直觀界面進行數據庫管理、表結構管理、數據操作和用戶權限管理。

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。MySQL以其高性能、可扩展性和跨平台支持著称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

在開發一個小型應用時,我遇到了一個棘手的問題:需要快速集成一個輕量級的數據庫操作庫。嘗試了多個庫後,我發現它們要么功能過多,要么兼容性不佳。最終,我找到了minii/db,這是一個基於Yii2的簡化版本,完美地解決了我的問題。

文章摘要:本文提供了詳細分步說明,指導讀者如何輕鬆安裝 Laravel 框架。 Laravel 是一個功能強大的 PHP 框架,它 упростил 和加快了 web 應用程序的開發過程。本教程涵蓋了從系統要求到配置數據庫和設置路由等各個方面的安裝過程。通過遵循這些步驟,讀者可以快速高效地為他們的 Laravel 項目打下堅實的基礎。

在使用Thelia開發電商網站時,我遇到了一個棘手的問題:MySQL模式設置不當,導致某些功能無法正常運行。經過一番探索,我找到了一個名為TheliaMySQLModesChecker的模塊,它能夠自動修復Thelia所需的MySQL模式,徹底解決了我的困擾。

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

MySQL是一個開源的關係型數據庫管理系統,廣泛應用於Web開發。它的關鍵特性包括:1.支持多種存儲引擎,如InnoDB和MyISAM,適用於不同場景;2.提供主從復制功能,利於負載均衡和數據備份;3.通過查詢優化和索引使用提高查詢效率。
