Everything You Need to Know About Scaling MySQL – Part 7: Customer Issues With MySQL

During the previous entries in this series, we discussed the various struggles that scaling a legacy MySQL database can cause and the options e-commerce sites have in combating those issues.

While any growing Web business can experience difficulties with scaling MySQL, some types of e-commerce sites are especially vulnerable to the inherent flaws and limitations of a scale-up relational model and resulting problems with MySQL performance. The following are three types of sites that we have seen grapple with customer-related MySQL performance issues:

Daily deals websites: A daily deal site—like Groupon or Ticketmaster, for example—must have all its data integrated (ACID compliance) because transactions are happening concurrently and thus impacting the total stock available. For example, if 10 items are available and a customer orders five, another customer viewing the same item should only see five left in stock. However, if the application reads from the read-slave instead of the write-master, the e-commerce site could sell 10 items to the second customer even though only five actually remain available for purchase.

Large catalog with many abandoned carts: Shopping cart abandonment is a common problem with e-commerce sites. Unfortunately with MySQL, a large number of abandoned carts can slow down the database as it reads an extremely large number of transactions occurring simultaneously, even though many are over for all intents and purposes. Additionally, the site’s Abandoned Cart functionality is conducting analytics to determine shopper habits and trends, then creating a promotional email to attempt to lure that shopper back to complete the purchase. Those analytics queries can be critical to winning back lost business, but they can also bring site performance to a grinding halt if the database is not robust.

Learn more about how to provide your customers a top-notch experience on your rapidly growing e-commerce site and get maximum performance.