分类 SQL 下的文章

一个 bug,我试着通过 Rails 在以「utf8」编码的 MariaDB 中保存一个 UTF-8 字符串,然后出现了一个离奇的错误:

Incorrect string value: ‘xF0x9Fx98x83 <…’ for column ‘summary’ at row 1

我用的是 UTF-8 编码的客户端,服务器也是 UTF-8 编码的,数据库也是,就连要保存的这个字符串「 <…」也是合法的 UTF-8。

问题的症结在于,...

阅读全文...

Oracle 已经发布了他们的开源关系数据库管理系统 MySQL 8。这个版本引入了许多改进,最受关注的可能是基于文档的存储,开发人员可以在同一个数据库中使用传统关系数据和“NoSQL”文档数据。该版本还提升了性能,增强了安全性,并改变了默认字符集以促进“移动优先”开发。
MySQL 在 MySQL 5.7 中引入了对 JSON 的支持,现在在 8.0 里带来了 MySQL 文档存储,开发人员可以将无模式 JSON 文档集合与关系表放在一起使用。MySQL 文档存储由一系列技术组成,一个新的客户端协议、X 协议以及让 My...

阅读全文...

1. 主键+业务虚拟键分表

这种方式适合查询比较单一的业务,最大的缺点就是业务对分库分表这层是有感知:

  1. 查询返回的时候需要在接口层拼接业务的真实Id
  2. 根据真实业务Id查询,或者更新数据的时候,需要拆分真实业务Id,路由到数据所在表,再根据数据库Id查询

虚拟场景

假设我们分了1024张表,具体表结构如下:

阅读全文...