MySQL or PostgreSQL?

When planning upgrade or transfer to new platform, every database specialist tries to find the best solution to store database according to particular requirements. One of the most popular need is to minimize total cost of ownership (TCO). This may lead to choosing one of open source database management systems. The most powerful and popular open source DBMS are MySQL and PostgreSQL. This whitepaper helps to understand basic pros and cons of these systems as well as differences in capabilities that could complicate the MySQL to PostgreSQL or backward migration process.

Benefitsof MySQL:

  • It is easy to install and use compared to PostgreSQL
  • Each table can have a different storage engine with its own features
  • Excellent support in all modern programming languages
  • Tight integration into the web

Disadvantages of MySQL:

  • It does not support user-defined types
  • It has no support for recursive queries
  • It does not have materialized views
  • It does not support sequences, although it can be emulated.
  • It does not support roll-back transactions for DDL statements such as “ALTER TABLE” or “CREATE TABLE”

Benefits of PostgreSQL:

  • It has 100% compliance with SQL standard
  • It supports point-in-time recovery
  • It has sophisticated locking mechanism
  • It supportsadvanced data types such as multi-dimensional arrays, spatial, etc

Disadvantages of PostgreSQL:

  • It is essentially slower than MySQL
  • It is quite complicated to manage and develop compared to MySQL
  • It is not so popular as MySQL,so it may be hard to get community support

This information helps to decide if it is reasonable to switch from MySQL to PostgreSQL or vice versa. PostgreSQL is good choice for large and complex corporate databases with perspective of scaling or deploying. On another hand, it does not make sense to use PostgreSQL for small and medium databases with a simple semantics. MySQL looks like a better choice for this purpose.

Everyone who consider database migration from MySQL to PostgreSQL or backward should remember the primary differences between these DBMS.

Types

Although data typesof MySQL and PostgreSQL are not equal, there is straightforward conversion between them.The table below illustrates conversion for distinguished types from MySQL to PostgreSQL:

MySQL PostgreSQL
BINARY(n) BYTEA
BIT BOOLEAN
CHAR(n), CHARACTER(n) CHAR(n), CHARACTER(n)
DATETIME TIMESTAMP [WITHOUT TIME ZONE]
DECIMAL(p,s), DEC(p,s) DECIMAL(p,s), DEC(p,s)
DOUBLE DOUBLE PRECISION
FLOAT REAL
MEDIUMINT INTEGER
TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB BYTEA
TINYINT SMALLINT
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT TEXT
VARBINARY(n), VARBINARY(max) BYTEA
VARCHAR(max) TEXT

Another difference between two DBMS is that PostgreSQL does not have property similar to MySQL’auto_increment’ increasing the value of the field each time when new row is inserted. For simple auto_increment columns (with base and step equal to 1) PostgreSQL SERIAL typesmay be used:

MySQL PostgreSQL
BIGINT AUTO_INCREMENT BIGSERIAL
INTEGER AUTO_INCREMENT SERIAL
SMALLINT AUTO_INCREMENT SMALLSERIAL
TINYINT AUTO_INCREMENT SMALLSERIAL

More complicated variations of MySQL auto_increment can be replaced by combination of sequence and trigger on insert.

Built-in Functions

Both MySQL and PostgreSQL have wide range of built-in functions to use in views and stored procedures.Each of these functions must be converted into the appropriate equivalent before passing it to the destination DBMS. Here is list of MySQL to PostgreSQL conversion for the most popular built-in functions:

MySQL PostgreSQL
curtime() current_time
DAY($a) or DAYOFMONTH($a) extract(day from date($a))::integer
DATEDIFF($1, $2) $1 – $2
HOUR($1) EXTRACT(hour FROM $1)::int
IFNULL($a,$b) COALESCE($a,$b)
INSTR($a, $b) position($b in $a)
ISNULL($a) $a IS NULL
LOCATE ($a,$b) INSTR($a, $b)
minute($1) EXTRACT(minute FROM $1)::int
month($1) EXTRACT(month FROM $1)::int
SYSDATE() CURRENT_DATE
WEEK($1) extract(week from ($1))::int
YEAR($1) extract(year from $1)

Learn more about differentaspects of MySQL to PostgreSQL and backward migration at https://www.convert-in.com/mysql-to-postgres.htm.

 

Importance-of-Email-Verification
Technology

The Importance of Email Verification and How It Works

Email verification is a process used to ensure that an email address belongs to a real user who can receive emails. This involves sending a code or activation link to the email address provided, which the user must then verify by opening the email and completing the required action. Find more about best practices for […]

Read More
Technology

Unveiling the iPhone 15 Pro: Exploring Features and Pricing in Dubai

Introduction In the ever-evolving landscape of technology, Apple continues to set the bar high with each new iteration of its flagship iPhones. The iPhone 15 Pro, the latest addition to the iconic lineup, has captivated tech enthusiasts worldwide. One of the key factors that consumers eagerly anticipate is the pricing and delve into the iPhone […]

Read More
Technology

MCB vs MCCB: Which One Is Right For Your Application?

MCBs (miniature circuit breakers) and MCCBs (Moulded Case Circuit Breakers) are two common circuit breakers that safeguard electrical systems. Although both circuit breakers are used for the same purpose, their characteristics and applications differ. Learn the main distinctions between MCBs and MCCBs to pick the right one for your application. Differences Between MCB and MCCB […]

Read More