From 8fb858f63d6308ff4a0dbc1737aa9191b6da5234 Mon Sep 17 00:00:00 2001 From: Morgan Tocker Date: Fri, 11 Oct 2013 23:08:28 -0400 Subject: I tried to rewrite the 'preserving data' section introduction, since I think InnoDB does a good job here with page checksums / crash recovery / doublewrite buffer, and is now the default. Other database systems (Oracle) have the hardware resilience features you are describing, like mirroring, but InnoDB has made an intentional choice not to offer this functionality directly. --- wiki/mysql/choose-something-else.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/wiki/mysql/choose-something-else.md b/wiki/mysql/choose-something-else.md index fb9b259..811569a 100644 --- a/wiki/mysql/choose-something-else.md +++ b/wiki/mysql/choose-something-else.md @@ -102,9 +102,16 @@ familiar with other SQL implementations). ### Preserving Data ... against unexpected changes: like most disk-backed storage systems, MySQL -is as reliable as the disks and filesystems its data lives on. MySQL makes -very little effort to do its own storage validation and error correction, but -this is a limitation shared with many, _many_ other systems. +is as reliable as the disks and filesystems its data lives on. MySQL provides +no additional functionality in terms of mirroring or hardware failure tolerance +(such as [Oracle ASM](http://en.wikipedia.org/wiki/Automatic_Storage_Management)). +However this is a limitation shared with many, _many_ other systems. + +When using the InnoDB storage engine (default since MySQL 5.5), MySQL maintains page +checksums in order to detect corruption caused by underlying storage. However, +many third-party software applications, as sell as users upgrading +from earlier versions of MySQL may be using MyISAM, which will frequently corrupt +data files on inproper shutdown. The implicit conversion rules that bite when storing data also bite when asking MySQL to modify data - my favourite example being a fat-fingered -- cgit v1.2.3 From c6777746d43756ff831bfc5ccc2fad389bd8f9c4 Mon Sep 17 00:00:00 2001 From: Morgan Tocker Date: Fri, 11 Oct 2013 23:14:17 -0400 Subject: My own silly typo --- wiki/mysql/choose-something-else.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wiki/mysql/choose-something-else.md b/wiki/mysql/choose-something-else.md index 811569a..795dcc7 100644 --- a/wiki/mysql/choose-something-else.md +++ b/wiki/mysql/choose-something-else.md @@ -111,7 +111,7 @@ When using the InnoDB storage engine (default since MySQL 5.5), MySQL maintains checksums in order to detect corruption caused by underlying storage. However, many third-party software applications, as sell as users upgrading from earlier versions of MySQL may be using MyISAM, which will frequently corrupt -data files on inproper shutdown. +data files on improper shutdown. The implicit conversion rules that bite when storing data also bite when asking MySQL to modify data - my favourite example being a fat-fingered -- cgit v1.2.3 From c03e3f4ebf6f04c5492b3c45a34f0dcc85bb261d Mon Sep 17 00:00:00 2001 From: Morgan Tocker Date: Fri, 11 Oct 2013 23:23:54 -0400 Subject: Clarified that utf-8 implimentation is standard (called the bmp) even if it is limited. The 4 byte version is available, but the fact that it's always a variable charset, but you have to choose which variable charset makes the argument somewhat true. This is intentional on mysql's behalf of course, since we do actually offer fileformat backwards compatibility. --- wiki/mysql/choose-something-else.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wiki/mysql/choose-something-else.md b/wiki/mysql/choose-something-else.md index 795dcc7..ceb3966 100644 --- a/wiki/mysql/choose-something-else.md +++ b/wiki/mysql/choose-something-else.md @@ -65,9 +65,9 @@ familiar with other SQL implementations). states](http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html), making it harder to carry expectations from manual testing over to code or from tool to tool. -* MySQL uses non-standard and rather unique interpretations of several common - character encodings, including UTF-8 and Latin-1. Implementation details of - these encodings within MySQL, such as the `utf8` encoding's MySQL-specific +* MySQL recommends UTF-8 as a character-set, but still defaults to Latin-1. The implimentation +of `utf8` up until MySQL 5.5 was only the 3-byte [BMP](http://en.wikipedia.org/wiki/Basic_Multilingual_Plane#Basic_Multilingual_Plane). MySQL 5.5 and beyond supports a 4-byte `utf8`, but confusingly must be set with the character-set `utf8mb4`. Implementation details of + these encodings within MySQL, such as the `utf8` 3-byte limit, tend to leak out into client applications. Data that does not fit MySQL's understanding of the storage encoding will be transformed until it does, by truncation or replacement, by default. -- cgit v1.2.3 From ade67c32632e9efa85f89ecb7cd2f9c20c894c50 Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Sat, 12 Oct 2013 13:40:59 -0400 Subject: Line wrapping. --- wiki/mysql/choose-something-else.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/wiki/mysql/choose-something-else.md b/wiki/mysql/choose-something-else.md index ceb3966..2851327 100644 --- a/wiki/mysql/choose-something-else.md +++ b/wiki/mysql/choose-something-else.md @@ -65,12 +65,15 @@ familiar with other SQL implementations). states](http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html), making it harder to carry expectations from manual testing over to code or from tool to tool. -* MySQL recommends UTF-8 as a character-set, but still defaults to Latin-1. The implimentation -of `utf8` up until MySQL 5.5 was only the 3-byte [BMP](http://en.wikipedia.org/wiki/Basic_Multilingual_Plane#Basic_Multilingual_Plane). MySQL 5.5 and beyond supports a 4-byte `utf8`, but confusingly must be set with the character-set `utf8mb4`. Implementation details of - these encodings within MySQL, such as the `utf8` - 3-byte limit, tend to leak out into client applications. Data that does not - fit MySQL's understanding of the storage encoding will be transformed until - it does, by truncation or replacement, by default. +* MySQL recommends UTF-8 as a character-set, but still defaults to Latin-1. + The implimentation of `utf8` up until MySQL 5.5 was only the 3-byte + [BMP](http://en.wikipedia.org/wiki/Basic_Multilingual_Plane#Basic_Multilingual_Plane). + MySQL 5.5 and beyond supports a 4-byte `utf8`, but confusingly must be set + with the character-set `utf8mb4`. Implementation details of these encodings + within MySQL, such as the `utf8` 3-byte limit, tend to leak out into client + applications. Data that does not fit MySQL's understanding of the storage + encoding will be transformed until it does, by truncation or replacement, by + default. * Collation support is per-encoding, with one of the stranger default configurations: by default, the collation orders characters according to Swedish alphabetization rules, case-insensitively. -- cgit v1.2.3