Jump to: navigation, search

PyMySQL evaluation

Revision as of 23:39, 12 January 2015 by Mike Bayer (talk | contribs) (Created page with "= PyMySQL Evaluation = This page will capture issues related to Openstack moving to the [https://github.com/PyMySQL/PyMySQL/ PyMySQL driver] for MySQL/MariaDB dbapi access....")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

PyMySQL Evaluation

This page will capture issues related to Openstack moving to the PyMySQL driver for MySQL/MariaDB dbapi access.

Rationale

While the MySQL-Python driver is a very mature and stable driver, it does not provide compatibility with either Python 3 or with eventlet monkeypatching. Openstack's usage of MySQL-Python, combined with the fact that concurrency is provided by eventlet, means that we currently have fully serialized database access within a single process, that is, only one database command occurs at a time within an Openstack Python process.

Drivers Under Consideration

The two drivers that are known to provide eventlet-monkeypatch compatibility are MySQL-Connector and PyMySQL, as they are written in pure Python. The two other well-known drivers for MySQL are MySQL-Python and OurSQL, both of which are written in C and offer no explicit support for eventlet or async. They can reportedly be built to support gevent using a system called Greenify, but the maturity and/or stabiltiy of this system is unknown.

A comparison at http://www.diamondtin.com/2014/sqlalchemy-gevent-mysql-python-drivers-comparison/ illustrates performance metrics observed with all four of these drivers, with the C-based libraries built both without and with the "greenify" system.