search
HomeBackend DevelopmentPHP TutorialMySQL plus transaction processing equals MaxSQL_PHP tutorial

MySQL plus transaction processing equals MaxSQL_PHP tutorial

Jul 13, 2016 pm 05:25 PM
mysqltransaction processingexistbigopenSource codeofequal

Last August at the OReilly-sponsored open source conference, MySQL developer Monty Widenius announced a new project called MaxSQL, an enhanced version of the currently popular MySQL database. The most important thing is that MaxSQL incorporates the latest Berkeley DB library from Sleepycat software, so the program supports transaction processing with another table type.

Currently, you cannot directly install the binary version of MaxSQL. You must compile it from the source code of MySQL 3.23 beta, but by the time you read this article, you should be able to download MaxSQL from the MySQL website. If you want to compile the latest version yourself, please see the article "Compiling your own MaxSQL", where I describe the compilation steps in detail.

What is a transaction?

Why does adding a transaction-safe table require a new project name? Perhaps I should mention that Monty Widenius, the main developer of MySQL, has two children, one named My and the other Max. Not only do the two brothers compete with each other, there is also a rival PostgreSQL.

About PostgreSQL, our other article in this issue "PostgreSQL adds a level to e-commerce" will mention that it is a competitor that is beneficial to us all, because every project team is overcoming Weaknesses in your own product. What MaxSQL does is bridge the gap between these two rivals. MySQL has fast read operations, so it is very popular with Web developers because Web content is mainly read. However, on the other hand, because MySQL uses ISAM tables, the entire table must be locked during write operations, which slows down update and insert operations, which is a big problem when the traffic is heavy. When the number of requests per second increases dramatically, write operations are queued in the server, and timeout errors occur on the Web page.

After using MaxSQL, you can still create ordinary fast ISAM type tables, or you can choose to use the new BDB type when a certain table needs to use transaction security features.

BDB tables are much faster than ISAM during write operations. Because they don't use table-level locks. In addition, the processing of any transaction table is logged in case of hardware failure. The log allows COMMIT/ROLLBACK operations. For example, if you place an order in an online store, the order will be recorded as a row in the "order" table. The system will subtract the corresponding inventory quantity from a row in the "inventory" table. If using MySQL's ISAM table, a CGI program needs to perform the following six steps:



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

If someone locked it For any table, this CGI program must wait. Once both are locked, CGI can update them and then release the lock. If step three fails (for example, the server is down), the order table will not be updated and your inventory will have been reduced.

After using the MaxSQL BDB transaction security type table, only four steps are needed:

BEGIN
UPDATE inventory table
UPDATE order table
COMMIT

You don't have to wait for the lock to be released, all four steps are one transaction. As soon as the BEGIN statement is read, MySQL reads the command into the buffer until it sees the COMMIT command. Therefore, all operations occur at the same time. Even if an unexpected operation occurs (disk full or power outage), the database will not be destroyed. In a non-transaction-safe system, if the third step fails, the database will be inconsistent. In the BDB table, if the operation on the order table fails, MySQL will resume the operation on the inventory table, so that no inconsistency will occur. .

Many websites use early versions of MySQL to implement table locks, but after using MaxSQL, it will be easy and fast.

What other new weapons are there?

In addition to the need to convert MySQL to MaxSQL because of the BDB table, there are also some important changes. One of the secret weapons is database replication. You can use one server as the master server and configure any number of slave servers, so that updates to the master server will also be copied to the slave servers. In order to use such a system, change your CGI scripts to make them aware of the existence of the MySQL slave server. This script will also switch to the slave server when it cannot connect to the master server.

It should be noted that such a system is only effective for databases with few write operations, because replication is not synchronous. If someone starts a transaction on the master server and the server dies before the transaction ends, the master server will not have time to copy the updates to the slave servers. In this way, this system is not suitable for e-commerce. Moreover, the CGI script always connects to the main server first, so it is not a load-balanced system.

Another major improvement is the format of ISAM type tables. The default table type is now called MyISAM. This type of table can handle up to 2GB per table and is cross-platform. You can copy a MyISAM file from Linux to Solaris without any conversion.

Conclusion:

MaxSQL can be used as an excellent alternative to expensive business systems. Many systems do not need to process many transactions and require Oracle to be installed. The transaction-safe tables provided by MaxSQL make the programming work of updating the database easier.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/532068.htmlTechArticleAt the open source conference sponsored by OReilly last August, MySQL developer Monty Widenius announced a new project It's called MaxSQL, an enhancement of the currently very popular MySQL database...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
PHP Performance Tuning for High Traffic WebsitesPHP Performance Tuning for High Traffic WebsitesMay 14, 2025 am 12:13 AM

ThesecrettokeepingaPHP-poweredwebsiterunningsmoothlyunderheavyloadinvolvesseveralkeystrategies:1)ImplementopcodecachingwithOPcachetoreducescriptexecutiontime,2)UsedatabasequerycachingwithRedistolessendatabaseload,3)LeverageCDNslikeCloudflareforservin

Dependency Injection in PHP: Code Examples for BeginnersDependency Injection in PHP: Code Examples for BeginnersMay 14, 2025 am 12:08 AM

You should care about DependencyInjection(DI) because it makes your code clearer and easier to maintain. 1) DI makes it more modular by decoupling classes, 2) improves the convenience of testing and code flexibility, 3) Use DI containers to manage complex dependencies, but pay attention to performance impact and circular dependencies, 4) The best practice is to rely on abstract interfaces to achieve loose coupling.

PHP Performance: is it possible to optimize the application?PHP Performance: is it possible to optimize the application?May 14, 2025 am 12:04 AM

Yes,optimizingaPHPapplicationispossibleandessential.1)ImplementcachingusingAPCutoreducedatabaseload.2)Optimizedatabaseswithindexing,efficientqueries,andconnectionpooling.3)Enhancecodewithbuilt-infunctions,avoidingglobalvariables,andusingopcodecaching

PHP Performance Optimization: The Ultimate GuidePHP Performance Optimization: The Ultimate GuideMay 14, 2025 am 12:02 AM

ThekeystrategiestosignificantlyboostPHPapplicationperformanceare:1)UseopcodecachinglikeOPcachetoreduceexecutiontime,2)Optimizedatabaseinteractionswithpreparedstatementsandproperindexing,3)ConfigurewebserverslikeNginxwithPHP-FPMforbetterperformance,4)

PHP Dependency Injection Container: A Quick StartPHP Dependency Injection Container: A Quick StartMay 13, 2025 am 12:11 AM

APHPDependencyInjectionContainerisatoolthatmanagesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itactsasacentralhubforcreatingandinjectingdependencies,thusreducingtightcouplingandeasingunittesting.

Dependency Injection vs. Service Locator in PHPDependency Injection vs. Service Locator in PHPMay 13, 2025 am 12:10 AM

Select DependencyInjection (DI) for large applications, ServiceLocator is suitable for small projects or prototypes. 1) DI improves the testability and modularity of the code through constructor injection. 2) ServiceLocator obtains services through center registration, which is convenient but may lead to an increase in code coupling.

PHP performance optimization strategies.PHP performance optimization strategies.May 13, 2025 am 12:06 AM

PHPapplicationscanbeoptimizedforspeedandefficiencyby:1)enablingopcacheinphp.ini,2)usingpreparedstatementswithPDOfordatabasequeries,3)replacingloopswitharray_filterandarray_mapfordataprocessing,4)configuringNginxasareverseproxy,5)implementingcachingwi

PHP Email Validation: Ensuring Emails Are Sent CorrectlyPHP Email Validation: Ensuring Emails Are Sent CorrectlyMay 13, 2025 am 12:06 AM

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software