マルチテナントシステムにおけるTiDBのResource Group戦略の例
はじめに スケーラブルかつ高可用性・強整合性という特徴を持った分散DBであるTiDBにはユーザごとに論理的にリソース上限を設けることが可能である。 今回はリソース上限を設ける仕組みであるResource Groupの構成例について示す。 想定するシステム 想定しているシステムは以下のようにテナントご
Category
31 articles
はじめに スケーラブルかつ高可用性・強整合性という特徴を持った分散DBであるTiDBにはユーザごとに論理的にリソース上限を設けることが可能である。 今回はリソース上限を設ける仕組みであるResource Groupの構成例について示す。 想定するシステム 想定しているシステムは以下のようにテナントご
はじめに TiDBのLONGTEXT型の最大列長は 4,294,967,295 ですが、実はデフォルト設定では6MiB以上のデータはエラーで保存できなくなっています。 今回はその回避方法について1つずつ検証しながら解説します。 結論 先に結論を書いておくと、以下の通り設定をいじって保存できるデータサ
v8.5のTiDBで利用できるLONGTEXTは型は最大長では4GB格納できますが、txnentrysizelimitという設定により6MiB以下のデータしか保存できないようになっています。 https://docs.pingcap.com/ja/tidb/stable/datatypestring
はじめに TiDBはクラスタ化された分散ノードが協調動作することでスケーラビリティを実現しています。 一方でスケーラビリティを重視してノードを分散させるようにしたことで、デフォルトのAUTOINCREMENTの動作ではIDは1, 30001, 2, 30002のように値が飛び飛びで採番されます。 本
はじめに code craftersというサイトでミドルウェアや低レイヤーな技術についてコードを作成しながら学べるということで試しにやってみました。 今回はSQLiteをKotlinで実装するコースをやってみようかなと思います。 Repository Setup まずはリポジトリのセットアップからや
はじめに 「作って壊して直して学ぶNewSQL入門」というTiDBの書籍が出ており、その中で様々なハンズオンがあったので実際にやってみました。 https://amzn.to/3HB8dtmhttps://amzn.to/3HB8dtm Localで実施できるものは皆やってそうだなーと思ったのでさく
本記事ではTiDBの開発者ガイドの「add a function」を参考に新しい関数を追加してみようと思います。 https://github.com/pingcap/tidbdevguide/blob/master/src/extendingtidb/addafunction.mdhttps://
https://pingcap.github.io/tidbdevguidehttps://pingcap.github.io/tidbdevguide TiDBで利用されているバージョンのGoをインストールする まずTiDBで使われているGoのバージョンを以下のコマンドで取得して、そのバージョンの
https://pingcap.github.io/tidbdevguide/getstarted/setupanide.htmlhttps://pingcap.github.io/tidbdevguide/getstarted/setupanide.html IDEの準備 まずVsCodeをインス
現状のテナント分離構造「インスタンスレベル分離」 私が関わっているプロダクトでは図のような「インスタンスレベル分離」というテナント分離構造になっています。 具体的にはテナント毎にアプリケーションが別れており、DBクラスタSQL Serverも同様にテナント毎に別れている状況です。 DBからテナントの
この記事は以下のサイトの翻訳記事です。 https://buildyourown.org/database/03btreeintrohttps://buildyourown.org/database/03btreeintro Btree は平衡 n 分木である 平衡木(Heightbalanced
この記事は以下のサイトの翻訳です。 https://buildyourown.org/database/02indexinghttps://buildyourown.org/database/02indexing クエリの種類 ほとんどのSQLクエリは、次の3種類に分類できます: データ全体のスキャ
やりたかったこと「外部キー制約のチェックをオフにしたい」 TiDB Cloudでの性能試験時にインサートのクエリが遅くなっており、実行計画を見ると外部キー制約のチェックで4秒ほど時間を使っていることがわかりました。 TiDBにおいて外部キー制約によってインサートが遅くなる理由については以下の記事で紹
以下のサイト「Build Your Own Database From Scrach In Go」の翻訳です。 https://buildyourown.org/database/tableofcontentshttps://buildyourown.org/database/tableofcont
この記事は以下のサイトの翻訳です。 https://buildyourown.org/database/01fileshttps://buildyourown.org/database/01files まずは一見単純な問題から始めましょう。データをファイルに保存し、それをアトミックかつ永続的、すなわ
やりたかったこと「AuroraのSnapShotをTiDB Cloudのインポート画面から読み込んでTiDBにデータ作成する」 AuroraMySQLのデータをTiDBに移行するために、まず、以下の記事を参考にDumplingでAuroraのDDLをエクスポートし、それをTiDBにインポートしました
NewSQLの代表的な欠点「レイテンシー」 NewSQLの欠点としてよく上がるのが「レイテンシー」です。 これは分散DBである程度強いデータ整合性を達成しようと思うと、仕方ない話なのかなと思います。 構造的にも納得できます。 意外な欠点「外部キー制約で性能劣化する」「外部キー制約が使えない」 多少レ
What I did I executed Llightning for importing Aurora MySQL SnapShot into TiDB Cloud Dedicatedv8.1.2. Encountered Error lightening.go Workaround: Fix
What I do: やろうとしていたこと Aurora MySQLのスナップショットをTiDB Cloud Dedicatedに復元する Encountered Error: 発生したエラー toml for lightning: ライトニング実行時のtomlファイル Command: 実行したコ
benchmark result: https://gist.github.com/c4pt0r/4c29c9cd387dd89fd51a84be7c6e9586https://gist.github.com/c4pt0r/4c29c9cd387dd89fd51a84be7c6e9586 This
課題「パーティションテーブルではテーブル内でidがユニークであることを保障できない」 パーティションを導入したテーブルはパーティションキーとidの複合キーが主キーになる そのため、原理上、テーブル内でidがユニークであることを保障できないと言う懸念点が存在する また、idにidentity列を指定し
環境 実施日: 2025/03/18 TiDB: TiDB Cloud Dedicated v8.1.2 Mac OS: Sequoia 15.3.2 24D81 tiup: 1.16.1 v1.16.1nightly20 go: go1.21.13 dumpling: v8.5.1 やろうとしてい
やっていたこと 以下の記事を参考にAuroraMySQLのデータをTiDBに積み直していました。 前段としてAuroraMySQLのDDLをTiDBにインポートする必要があったので、dumplingというTiDBのツールでAuroraMySQLのDDLをダンプして、そのデータをTiDB Cloudの
環境情報 MySQLの環境: AuroraMySQL MySQL 8系 TiDB Cloud: v8.1.2 MySQLの挙動「datetime型のカラムとデフォルト値のNOWメソッドの精度が合っていなくてもエラーにならない」 MySQLには日付型の中にTIMESTAMPと言う型があるようですが、こ
はじめに 今回は、7億行ものデータ行を持つテーブルの日付カラムにパーティションを導入することで、delete文が高速になるかどうかを検証しました。 また、検証対象テーブルのファイルグループを、デフォルトでデータが格納されるPRIMARY以外にすることで、さらに高速化の効果が得られるかについても調査し
事例: 4億行のテーブルに対してselectクエリ実行した場合 4億行で比較したところ、7秒かかるクエリが1秒まで短縮された https://www.youtube.com/watch?v=fN4Qa8g 事例: 20億行のテーブルに対して、selectを実行した場合 20億行のテーブルに対して、s
Amazon Aurora DSQLというポスグレ互換のNewSQLが2024年末に発表されたが、サポートされていないポスグレの機能もあるとのこと。 https://docs.aws.amazon.com/auroradsql/latest/userguide/workingwithpostgres
関数従属 概要…ある属性xの値が決めると他の属性yの値が一意に決まる関係のことを関数従属と呼ぶ。属性xのことを独立属性決定項といい、属性yを従属属性従属項という。関数従属に着目することで、正規化することが重要。 表記 x y xならばyと読む : xに対して単一のyが決まる場合の表記 x y : x
目次 1. はじめに 3. jOOQとは 5. 1万件のレコードをjOOQでアップデートする際の性能 7. おわりに 1. はじめに みなさんDBのデータ更新をする際になんとなくupdateしてませんか? 実は数万件単位のupdateをする際に、愚直にupdateするのとbulk updateするの
ロックエスカレーションとは SQL Serverには注意すべき挙動として、ロックエスカレーションというものがあります。 ロックエスカレーションとは、あるテーブルに対して行ロックを取得しすぎた場合に、代わりにテーブルロックを取得する挙動です。 ロックエスカレーションの発生条件 具体的には、以下のいずれ
近年ACID特性を持ちながらread/writeの両方を水平スケールさせることが可能なDB「NewSQL」が注目されています。 本記事ではNewSQL・NoSQL・RDBの特性やメリットデメリットについて解説します。 RDBの特性・メリット・デメリット RDBRelational Databaseと