NestJS Enterprise Backend APIs · レッスン

データベースのパフォーマンス監視

SupabaseのツールとPostgreSQLの機能を活用して、データベースのパフォーマンスを監視し、ボトルネックを特定して主要な指標を追跡します。

レッスン 2/611 ステップ

「データベースのパフォーマンス監視」はCoddyKit上の無料NestJS Enterprise Backend APIsレッスンです。 これはレッスン2/6です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはNestJS Enterprise Backend APIs学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 NestJS Enterprise Backend APIsコースには全6レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

Why Monitor Database Performance?

Imagine your app suddenly feels slow. Users are complaining, and operations are timing out. Database performance monitoring is your diagnostic tool!

It helps you:

  • Identify slow queries causing bottlenecks.
  • Understand resource usage (CPU, RAM).
  • Prevent outages by spotting issues early.
  • Optimize your database for speed and efficiency.

Key Performance Indicators (KPIs)

To monitor effectively, you need to know what to look for. These are your key performance indicators:

  • CPU Usage: How much processing power your database is using. High CPU can mean complex queries or too many connections.
  • Memory Usage: How much RAM is consumed. Excessive usage can lead to slower disk I/O.
  • Disk I/O: The rate at which data is read from and written to disk. High I/O can indicate inefficient queries or missing indexes.
  • Active Connections: The number of clients currently connected to your database. Too many can overwhelm the server.
  • Query Latency: The time it takes for queries to execute. This directly impacts user experience.

Supabase Dashboard: Metrics Overview

Supabase provides built-in monitoring tools right in your project dashboard. Navigate to the 'Metrics' section to see a high-level overview of your database's health.

Here you'll find graphs and charts for CPU, memory, network, and disk usage. This is your first stop for a quick health check!

Dashboard: Resource Graphs Deep Dive

The 'Metrics' section details historical performance. Look for:

  • CPU Usage: Spikes often correlate with heavy query loads.
  • Memory Usage: A steady increase might indicate memory leaks or inefficient caching.
  • Disk I/O: High read/write activity can point to queries scanning large tables without proper indexes.
  • Network Usage: Shows data transfer in and out, useful for understanding client-server communication load.

Analyzing trends over time helps you understand normal behavior and spot anomalies.

Dashboard: Query Performance Insights

Beyond resource graphs, the Supabase dashboard often includes a 'Query Performance' or 'Insights' section. This tool is invaluable for identifying your slowest queries.

It aggregates data on query execution times, frequency, and total time spent. This allows you to quickly pinpoint which SQL statements are consuming the most resources and need optimization.

PostgreSQL: pg_stat_activity

For real-time insights into what your database is doing *right now*, you can use PostgreSQL's pg_stat_activity view. It shows every active connection and the query it's currently running (or waiting on).

This is great for spotting long-running queries or connections that are idle in transaction.

SELECT
  pid,
  datname,
  usename,
  state,
  query_start,
  query
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY query_start DESC;

PostgreSQL: pg_stat_statements

While pg_stat_activity is for real-time, pg_stat_statements helps you track *historical* aggregated statistics for all executed queries. It's an extension that you enable.

It records metrics like total execution time, call count, and standard deviation for each unique query, making it perfect for finding consistently slow queries over time.

Enabling and Using pg_stat_statements

To use pg_stat_statements, you first need to enable it in your Supabase project's database settings (under Extensions) or via SQL in the SQL Editor.

After enabling, run some queries, then query the view to see the stats:

CREATE EXTENSION IF NOT EXISTS pg_stat_statements;

SELECT
  query,
  calls,
  total_time,
  mean_time,
  stddev_time
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 10;

Interpreting pg_stat_statements Results

When examining pg_stat_statements output, focus on:

  • total_time: Queries with the highest total execution time are your primary targets for optimization.
  • mean_time: High average execution time indicates a consistently slow query.
  • calls: A frequently called query, even if fast, can contribute significantly to overall load if its total_time is high.

Use these insights to identify which queries need attention, perhaps by adding indexes or rewriting them.

Monitoring Tools Check

You've learned about various tools and metrics for monitoring your Supabase database. Let's test your knowledge!

Recap: Keeping Your Database Healthy

In this lesson, we explored how to monitor your Supabase database's performance. We covered:

  • The importance of monitoring and key KPIs like CPU, memory, and query latency.
  • Utilizing the Supabase Dashboard's Metrics and Query Performance sections.
  • Leveraging powerful PostgreSQL views like pg_stat_activity for real-time insights.
  • Implementing and interpreting pg_stat_statements for historical query analysis.

Regular monitoring helps you proactively maintain a fast and responsive application. Next up, we'll dive into optimizing those slow queries!

無料で開始

AI チューターと学ぶ TypeScript — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
20
レッスン
76

よくある質問

「データベースのパフォーマンス監視」レッスンは無料ですか?

はい。「データベースのパフォーマンス監視」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、NestJS Enterprise Backend APIsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 NestJS Enterprise Backend APIsコースには全6レッスンが含まれています。

「データベースのパフォーマンス監視」で何を学びますか?

SupabaseのツールとPostgreSQLの機能を活用して、データベースのパフォーマンスを監視し、ボトルネックを特定して主要な指標を追跡します。 ブラウザで直接実行するハンズオンコードでNestJS Enterprise Backend APIsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

NestJS Enterprise Backend APIsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのNestJS Enterprise Backend APIsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/6です。

「データベースのパフォーマンス監視」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このNestJS Enterprise Backend APIsレッスンでコードを書いて実行できますか?

はい。すべてのNestJS Enterprise Backend APIsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. キャッシュ戦略(Redis)
  2. データベースのパフォーマンス監視
  3. ロードバランシングとプロキシ
  4. クエリ最適化の戦略
  5. サーバーレスデプロイ
  6. Supabaseプロジェクトのスケーリング
← NestJS Enterprise Backend APIsに戻る