MySQL

1. 安装MySQL及常用配置(性能优化)

推荐使用lnmp安装,也可以使用docker安装。

关于建表时引擎的选择:MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及设计到安全性较高的应用。Innodb支持ACID事务,myISAM不支持。

MYSQL的事务配置项

[mysqld]
innodb_flush_log_at_trx_commit=1
表示事务提交时立即把事务日志flush写入磁盘,同时数据和索引也更新,很费性能。
innodb_flush_log_at_trx_commit=0
事务提交时,不立即把事务日志写入磁盘,每隔1秒写一次,MySQL挂了可能会丢失事务的数据。
innodb_flush_log_at_trx_commit=2 ,在整个操作系统 挂了时才可能丢数据,一般不会丢失超过1-2秒的更新。

事务提交时,立即写入磁盘文件(这里只是写入到系统内核缓冲区,但不立即刷新到磁盘,而是每隔1秒刷新到磁盘,同时更新数据和索引),这种方案是不是性价比好一些,当然如何配置,决定于你对系统数据安全性的要求。

MySQL缓存大小设置

这个应该根据机器的内存大小进行设置,但是该项对性能的提升并不明显,mysql会自动选择合适的缓存大小。下面示例将缓存大小设置为8G:

[mysqld]
innodb_buffer_pool_size=8G

2. 常用客户端

很好用的工具是SQLyog,也是收费软件,也有破解版。它最大的特色是提供可编辑的SQL文本框,可以选择部分SQL语句执行,按F8快捷键就执行,非常方便。

常用的软件还有Navicat,这是收费软件,有很多破解版绿色版下载。它支持MySQL、Oracle、SQLite、PostgreSQL等。一般使用它来浏览数据块和表,很方便地创建表、修改表,支持流量表数据和修改,命令行也很方便。

3. emoji标签

emoji表情可以由一个unicode或两个unicode来表示,例如:

\u2764 表示的是

\ud83d\ude04 表示的是 😄 可以在这个页面测试转换。

mysql默认的utf8编码,只支持第一种单个unicode的存储。测试一下数据库字段是否支持emoji表情:复制这个表情😄到数据库字段值中,如果可以保存,说明已经支持utf8mb4编码了

如果还不能成功保存,那么(配置按照这篇文章进行):

  1. 配置my.cnf
[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

然后重启mysql。

  1. 实际上,只要修改表的字段为utf8mb4编码即可(对于已有的表也一样)。对于表,也可以整个表设置为utf8mb4编码,以后的字段就会默认是utf8mb4编码(当然也可以就某个单独字段修改为utf8)。

  2. 【非常重要】要重新链接mysql客户端连接,例如客户端重新连,Java程序重启。

  3. 若是Java,要确保mysql connector版本高于5.1.13。经过测试,5.1.30版本有问题,别用。当前最新的5.1.41版本没有问题。

4. 容易错的设置

  • mysql的decimal常用来表示准确的小数,在新建该字段时,要注意它的默认小数点数位是0位,即相当于整数。

5. 常见问题

Waiting for table metadata lock

常出现在修改表DDL时锁住,解决方法是kill掉卡在这个状态的session进程。相关文章:12

文档更新时间: 2019-03-20 14:51   作者:nick