May 08, 2017 |
Insight for DBAs, MySQL
In this blog post, I’ll review how a hung MySQL transaction can cause the InnoDB history length to grow and negatively affect MySQL performance. Recently I was helping a customer discover why SELECT queries were running slower and slower until the server restarts (which got things back to normal). It took some time to get […]
Apr 07, 2017 |
Insight for DBAs, MySQL
In this blog, we’ll look at how queries in systems with parallel processing can return rows in a non-deterministic order (and how to fix it). Short story: Do not rely on the order of your rows if your query does not use
ORDER BY. Even with
ORDER BY, rows with the same values can be sorted differently. To fix this […]
Mar 17, 2017 |
Insight for DBAs, MySQL
Feb 13, 2017 |
Benchmarks
For this blog post, I’ve decided to try ClickHouse: an open source column-oriented database management system developed by Yandex (it currently powers Yandex.Metrica, the world’s second-largest web analytics platform). In my previous set of posts, I tested Apache Spark for big data analysis and used Wikipedia page statistics as a data source. I’ve used the same data as […]
Oct 20, 2016 |
MySQL
In this blog, we’ll discuss descending indexes in MySQL 8.0. Summary The future MySQL 8.0 will (probably) have a great new feature: support for index sort order on disk (i.e., indexes can be physically sorted in descending order). In the MySQL 8.0 Labs release (new optimizer preview), when you create an index you can specify the […]
Oct 18, 2016 |
MySQL
This blog post discusses the ramifications of STRICT mode in MySQL 5.7. In short By default, MySQL 5.7 is much “stricter” than older versions of MySQL. That can make your application fail. To temporarily fix this, change the
SQL_MODE to
NO_ENGINE_SUBSTITUTION (same as in MySQL 5.6):
|
mysql> set global SQL_MODE="NO_ENGINE_SUBSTITUTION"; |
MySQL 5.7, dates and default values The default
SQL_MODE in MySQL 5.7 […]
Oct 12, 2016 |
MySQL
This blog updates Stephane Combaudon’s blog on MySQL performance tuning and covers MySQL 5.7 performance tuning immediately after installation. A few years ago, Stephane Combaudon wrote a blog post on Ten MySQL performance tuning settings after installation that covers the (now) older versions of MySQL: 5.1, 5.5 and 5.6. In this post, I will look into […]
Oct 03, 2016 |
MySQL
In this blog post, we’ll look at MySQL 8.0 general tablespaces. Introduction MySQL 8.0 (the DMR version is available now) has two great features (among others): The new data dictionary completely removed *.frm files, which is great The ability to create a tablespace and assign a group of tables to it (originally introduced in 5.7). […]
Sep 13, 2016 |
Insight for DBAs, MySQL
In this post, we’ll look at MySQL CDC, streaming binary logs and asynchronous triggers. What is Change Data Capture and why do we need it? Change Data Capture (CDC) tracks data changes (usually close to realtime). In MySQL, the easiest and probably most efficient way to track data changes is to use binary logs. However, […]
Aug 17, 2016 |
Insight for DBAs, MySQL
In this blog post, we’ll discuss how to improve the performance of slow MySQL queries using Apache Spark. In my previous blog post, I wrote about using Apache Spark with MySQL for data analysis and showed how to transform and analyze a large volume of data (text files) with Apache Spark. Vadim also performed a […]
Jul 06, 2016 |
MySQL
In this blog post, we’ll look at pipelining versus parallel query execution when using X Plugin for MySQL 5.7. In my previous blog post, I showed how to use X Plugin for MySQL 5.7 for parallel query execution. The tricks I used to make it work: Partitioning by hash Open N connections to MySQL, where N = number […]
Jul 05, 2016 |
MySQL
In this post, I’ll discuss how MySQL 5.7 handles UTF8MB4 and the load data infile. Many of my clients have told me that they do not like using the LOAD DATA INFILE statement and prefer to manually parse and load the data. The main reason they do it are issues with the character sets, specifically […]
Jun 23, 2016 |
MySQL
In this blog series, I will share my experiences as I migrate commercial databases (i.e., Microsoft SQL or Oracle) to open source (MySQL). More specifically, we will look at how you can migrate from MS SQL Server to MySQL. For this first blog post I’ve chosen Jira database as an example, and used three different tools to […]
Jun 08, 2016 |
MySQL
In this blog post, I’ll discuss how to use MySQL 5.7 Document Store to track data from Internet of Things (IoT) devices. Using JSON in MySQL 5.7 In my previous blog post, I’ve looked into MySQL 5.7.12 Document Store. This is a brand new feature in MySQL 5.7, and many people are asking when do I […]
Jun 01, 2016 |
MongoDB, MySQL
In this blog, I discuss a MongoDB administration checklist designed to help MySQL DBAs. If you are MySQL DBA, starting MongoDB administration is not always an easy transition. Although most of the concepts and even implementation are similar, the commands are different. The following table outlines the typical MySQL concepts and DBA tasks (on the […]
May 27, 2016 |
MySQL
In this blog, we will discuss MySQL 5.7 asynchronous query execution using the X Plugin. Overview MySQL 5.7 supports X Plugin / X Protocol, which allows (if the library supports it) asynchronous query execution. In 2014, I published a blog on how to increase a slow query performance with the parallel query execution. There, I created a prototype […]
May 24, 2016 |
MySQL
In this blog, we’ll look at the MySQL 5.7 document store feature, and how it is implemented. Document Store MySQL 5.7.12 is a major new release, as it contains quite a number of new features: Document store and “MongoDB” like NoSQL interface to JSON storage Protocol X / X Plugin, which can be used for asynchronous […]
Apr 15, 2016 |
MongoDB, MySQL, Percona Live
This blog post will discuss creating geo-enabled applications with MongoDB, GeoJSON and MySQL. Introduction Recently I published a blog post about the new GIS features in MySQL 5.7. Today I’ve looked into how to use MongoDB (I’ve tested with 3.0 and 3.2, with 3.2 being much faster) for the same purpose. I will also talk […]
Apr 08, 2016 |
MySQL
This blog post will discuss the issues and solutions for MySQL Data at Rest encryption. There is an update, too, by my colleague Ceri Williams – you can check it out here. Data at Rest Encryption is not only a good-to-have feature, but it is also a requirement for HIPAA, PCI, and other regulations. There are […]
Apr 01, 2016 |
MySQL
Historical MySQL Bug#2, opened 12 Sep 2002, states that MySQL Connector/J doesn’t make toast. It hasn’t been fixed for more than 14 years. I’ve finally created a patch for it. First of all: why only fix this for MySQL Connector/J? We should make sure the server can do this for any implementation! With this fix, now […]