D26 - 与MySQL相异的部分

因为一开始的目的之一是想要找一套兼容MySQL可尽量无痛转移的资料库,所以兼容程度是蛮重要的考量。官网上有列出目前尚不支援的部分,使用前请详阅并三思。以下是我把第一眼看到会我头痛的不支援的部分整理出来。

TiDB目前不支援event,也不支援store procedure...因为我目前会用event加上procedure定时对表格做一些资料删除以及新增删除partition的动作,所以势必得改以其他方式进行。

目前TiDB支援的parition类型有Range,List,List Columns,Hash。但是建议在正式站上使用的只有Range。新增与删除partition一样是使用ADD PARTITION/DROP PARTTION,但是不支援REORGANIZE PARTITION。这表示无法对已经建立的partition做修改。这影响到我用来执行新增删除partition的部分,必须改为每天执行ADD/DROP PARTITION,且不设定MAX Value。

在语法的使用上,要注意的地方有,执行alter table的时候,不能一次异动两个以上的栏位或者index。另外group by回传的顺序也与MySQL5.7不同。在index的使用上,要注意的地方是栏位型态,如果今天条件栏位本身是字串,那就要避免让他cast,例如zone_id是字串,那条件就该用zone_id > "9487"。

还有一般我们常用的auto increment,TiDB只保证在仅有一台TiDB server会依序增加,目前预设一台TiDB分配到30000个值。所以遇到多台TiDB server时,就可能发生auto increment id 从1跳到300001又跳回2的情况,如果要以这栏位当作排序的条件会发生问题。另外auto increment必须在一开始就宣告好栏位,无法使用alter table的方式追加。除了auto increment,tidb可以指定某一列为AUTO_RANDOM,这主要是为了解决大量的并发写入导致产生热点。


<<:  Day 21 需要高效的NoSQL资料库-DynamoDB看过来

>>:  发布 Library

DAY12 - 使用 angular fire 操作firebase

firebase sdk 是什麽 firebase sdk 是 firebase 官方推出和 fir...

[ Day 38 ] - winston 记录下发生的错误

常见的故事 ... 客户 : 系统出错了 , 可以帮忙修一下吗 【・ヘ・?】 工程师 : 我这边看起...

如何自己设计一套ERP程序 前传-写ERP之前要决定的20件事 决定ERP主要编写程序语言

第2个决定 决定ERP主要编写程序语言 理论上所有程序语言只要能读取资料库的都可拿来设计一套ERP软...

【Day 02】从零开始的 Line Chatbot 系统-序章 Part 2

认识一些软件开发的专业术语 在做软件专案的时候,常常会看到一些英文简写,像是 Day 01 讲到的 ...

{DAY4} 资料库简介

什麽是资料库(database)? 想必大家都对资料有一定的认识,以我们生活中常看的电影为例,电影名...