Skip to content

Commit 1f6b900

Browse files
authored
『Cloud Spanner について知らなかったことを書く』のh2要素を非リンクに修正 (#218)
1 parent b43c28c commit 1f6b900

File tree

1 file changed

+20
-8
lines changed
  • content/posts/learn-about-spanner

1 file changed

+20
-8
lines changed

content/posts/learn-about-spanner/index.md

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ color: ""
1717

1818
普段業務でCloud Spannerを使っているが、雰囲気で使っている自覚が大いにあるのでドキュメントやブログを読んで知らなかったことを自分用のメモとしてまとめてみる。
1919

20-
## [Spanner のスキーマ設計の最適化  |  Google Cloud](https://cloud.google.com/spanner/docs/whitepapers/optimizing-schema-design?hl=ja#tradeoffs_of_locality)
20+
## Spanner のスキーマ設計の最適化  |  Google Cloud
21+
[Spanner のスキーマ設計の最適化  |  Google Cloud](https://cloud.google.com/spanner/docs/whitepapers/optimizing-schema-design?hl=ja)
2122
- キー定義とインターリーブの2つはスケーラビリティに大きな影響を与える
2223
- Spannerにはルートテーブルとインターリーブされたテーブルの2種類のテーブルがある。[^1]
2324

@@ -83,7 +84,9 @@ Spannerテーブルの行は`PRIMARY_KEY`によって辞書順に並べかえら
8384

8485
![spanner-sharding.webp](spanner-sharding.webp)
8586

86-
## [スキーマ設計のベスト プラクティス  |  Spanner  |  Google Cloud](https://cloud.google.com/spanner/docs/schema-design?hl=ja#ordering_timestamp-based_keys)
87+
## スキーマ設計のベスト プラクティス  |  Spanner  |  Google Cloud
88+
[スキーマ設計のベスト プラクティス  |  Spanner  |  Google Cloud](https://cloud.google.com/spanner/docs/schema-design?hl=ja)
89+
8790
次のような場合はキー列をタイムスタンプ降順に格納することでホットスポットを回避する。
8891

8992
- 最新の履歴を読み取る際、履歴にインターリーブ テーブルを使用しており、親行を読み取る場合
@@ -127,7 +130,9 @@ CREATE NULL_FILTERED INDEX UsersByLastAccess ON Users(LastAccess);
127130
1. インデックスに`ShardId`を追加する
128131
1. (そもそも)インデックスをインターリーブする
129132

130-
## [セカンダリ インデックス  |  Spanner  |  Google Cloud](https://cloud.google.com/spanner/docs/secondary-indexes?hl=ja#add-index)
133+
## セカンダリ インデックス  |  Spanner  |  Google Cloud
134+
[セカンダリ インデックス  |  Spanner  |  Google Cloud](https://cloud.google.com/spanner/docs/secondary-indexes?hl=ja)
135+
131136
- Spannerではセカンダリインデックスに次のデータが格納される。
132137
- ベーステーブルのすべてのキー列
133138
- インデックスに含まれるすべての列
@@ -162,7 +167,8 @@ SELECT SongId FROM Songs ORDER BY SongId DESC LIMIT 1;
162167
CREATE INDEX SongIdDesc On Songs(SongId DESC);
163168
```
164169

165-
## [Sharding of timestamp-ordered data in Cloud Spanner - googblogs.com](https://www.googblogs.com/sharding-of-timestamp-ordered-data-in-cloud-spanner/)
170+
## Sharding of timestamp-ordered data in Cloud Spanner - googblogs.com
171+
[Sharding of timestamp-ordered data in Cloud Spanner - googblogs.com](https://www.googblogs.com/sharding-of-timestamp-ordered-data-in-cloud-spanner/)
166172

167173
タイムスタンプ順に並んだレコードをいかに効率よく挿入、取得するかについての解説記事。
168174

@@ -286,15 +292,18 @@ ORDER BY
286292
CompanyId, EntryShardIdの順番を逆にしてみたクエリ
287293
![swap.webp](swap.webp)
288294

289-
## [Cloud Spanner におけるトランザクションのロックについて](https://cloud.google.com/blog/ja/products/databases/transaction-locking-in-cloud-spanner)
295+
## Cloud Spanner におけるトランザクションのロックについて
296+
[Cloud Spanner におけるトランザクションのロックについて](https://cloud.google.com/blog/ja/products/databases/transaction-locking-in-cloud-spanner)
290297

291298
> Spanner におけるトランザクションのロックの粒度は、セル、つまり行と列の交点となります。
292299
293300
なのでREAD, WRITEの範囲(行および列)を最小限にすることでロック範囲を最小限にすることができる。結果として他のトランザクションに与えるパフォーマンス影響を最小限にすることができる。
294301

295302
他には複数のトランザクションが同時に実行された際の優先度について詳しく解説してあった。
296303

297-
## [Spanner の読み取りと書き込みのライフサイクル  |  Google Cloud](https://cloud.google.com/spanner/docs/whitepapers/life-of-reads-and-writes?hl=ja)
304+
## Spanner の読み取りと書き込みのライフサイクル  |  Google Cloud
305+
[Spanner の読み取りと書き込みのライフサイクル  |  Google Cloud](https://cloud.google.com/spanner/docs/whitepapers/life-of-reads-and-writes?hl=ja)
306+
298307
Spannerのレプリカセットの構成については次の記事が非常にわかりやすい。
299308

300309
[Cloud Spannerのスプリット分散をわかった気になる](https://zenn.dev/facengineer/articles/bca8790087b0e4)
@@ -314,7 +323,8 @@ Spannerのレプリカセットの構成については次の記事が非常に
314323

315324
[Cloud Spanner におけるトランザクションのロックについて](https://cloud.google.com/blog/ja/products/databases/transaction-locking-in-cloud-spanner)
316325

317-
## [SQL のベスト プラクティス  |  Spanner  |  Google Cloud](https://cloud.google.com/spanner/docs/sql-best-practices?hl=ja#optimize-scans)
326+
## SQL のベスト プラクティス  |  Spanner  |  Google Cloud
327+
[SQL のベスト プラクティス  |  Spanner  |  Google Cloud](https://cloud.google.com/spanner/docs/sql-best-practices?hl=ja)
318328

319329
### クエリパラメータの使用
320330
クエリパラメータを使用することで次のメリットがある。
@@ -386,7 +396,9 @@ SELECT a.AlbumTitle FROM Albums a
386396
WHERE STARTS_WITH(a.AlbumTitle, @prefix);
387397
```
388398

389-
## [クエリ実行プラン  |  Spanner  |  Google Cloud](https://cloud.google.com/spanner/docs/query-execution-plans?hl=ja)
399+
## クエリ実行プラン  |  Spanner  |  Google Cloud
400+
[クエリ実行プラン  |  Spanner  |  Google Cloud](https://cloud.google.com/spanner/docs/query-execution-plans?hl=ja)
401+
390402
CPUの消費量が多いクエリの場合、実行計画は30日間保存されている。
391403

392404
確認方法は以下。

0 commit comments

Comments
 (0)