Exporters From Japan

Teams chat, instant message

 
Wholesale exporters from Japan   Company Established 1983
  • HOME
  • ABOUT
    • RESULTS
    • differences
    • BENEFITS
    • HISTORY
    • TEAM
    • LOCATION
    • FACILITIES
    • BANKING
    • MEMBERSHIPS
    • APPROVALS
    • LICENCES
    • SUPPLIERS
    • SPONSORSHIPS
    • MEDIA
    • PRIVACY
  • AUCTIONS
    • VEHICLE AUCTIONS
    • YAHOO! AUCTION
    • GOVERNMENT AUCTIONS
    • AUCTION MEMBERSHIPS
    • BID TRACKER
    • COST ESTIMATOR
    • COST VERIFICATION
  • SHIPPING
    • SHIPPING SERVICES
    • SHIPPING ESTIMATOR
    • SHIPPING SCHEDULE
    • SHIPMENT TRACKING
    • SHIP LOCATORS
  • FEES
    • TS REWARDS
  • TOOLS
    • CURRENCY CONVERTER
    • AUCTION TRANSPORT
    • VIN DECODERS
    • YEAR CONVERTER
  • guides
    • SELECT EXPORTER
    • IMPORT VEHICLE
    • IMPORT PARTS
    • HALF CUTS
    • MAXIMISE PROFITS
  • FAQ
    • general
    • vehicles
    • vehicle auctions
    • YAHOO! auction
    • GOVERNMENT AUCTIONS
    • parts
    • shipping
    • trading account
    • how to import
  • CONTACT
    • CONNECT
  • VEHICLES
    • GOONET
    • INSPECTIONS
    • SPECIFICATIONS
  • BRAND
    • JAPANESE CARS
      • DAIHATSU
      • EUNOS
      • FORD
      • HONDA
      • ISUZU
      • LEXUS
      • MAZDA
      • MITSUBISHI
      • MITSUOKA
      • NISSAN
      • SUBARU
      • SUZUKI
      • TOYOTA
    • GERMAN CARS
    • AMERICAN CARS
    • BRITISH CARS
    • ITALIAN CARS
    • FRENCH CARS
    • SWEDISH CARS
    • KOREAN CARS
  • TYPE
    • mobility
    • VENDING
    • instruction
    • TAXIS
    • AMBULANCES
    • FIRE ENGINES
    • HEARSES
    • LIMOUSINES
    • COMMERCIAL
  • CLASS
    • SPORTS CARS
    • MOTORSPORT
    • LEFT HAND DRIVE
    • FOUR WHEEL DRIVE
    • NEW VEHICLES
    • SALVAGE VEHICLES
    • PASSENGER VANS
    • LUXURY CARS
    • CLASSIC CARS
    • REPLICA CARS
    • RETRO CARS
    • BOX CARS
    • KEI MINI CARS
    • KEI MINI VANS
    • CONVERTIBLES
    • MICRO CARS
    • COMMUTER CARS
  • FUEL
    • HYBRID VEHICLES
    • ELECTRIC VEHICLES
    • CNG VEHICLES
    • LPG VEHICLES
    • DIESEL VEHICLES
  • TRUCKS
    • HINO TRUCKS
    • TOYOTA TRUCKS
    • ISUZU TRUCKS
    • NISSAN TRUCKS
    • UD TRUCKS
    • MAZDA TRUCKS
    • MITSUBISHI TRUCKS
    • FUSO TRUCKS
    • MERCEDES TRUCKS
    • VOLVO TRUCKS
    • DUMP TRUCKS
    • WING TRUCKS
    • REFRIGERATED TRUCKS
    • CRANE TRUCKS
    • CAR CARRIERS
    • TOW TRUCKS
    • PLATFORM TRUCKS
    • TANKER TRUCKS
    • VACUUM TRUCKS
    • COMPACTOR TRUCKS
    • CONCRETE MIXERS
    • CONCRETE PUMPS
    • ROLL TRUCKS
    • FIRE TRUCKS
    • PRIME MOVERS
    • 4WD TRUCKS
    • HYBRID TRUCKS
    • CNG TRUCKS
  • minitrucks
    • DAIHATSU
    • HONDA
    • MAZDA
    • MITSUBISHI
    • NISSAN
    • SUBARU
    • SUZUKI
    • DUMP
    • CRANE
    • CAMPER
    • REFRIGERATED
    • 4WD
    • NEW
  • BUSES
  • MOTORHOMES
    • YAHOO!
    • RAKUTEN
    • DEALER
  • PARTS
    • FREE REPORT
    • PARTS CONTAINERS
    • PARTS SYSTEMS
    • PARTS PROTECTION
    • BODY SHELLS
    • DISMANTLING
    • ONLINE PARTS
    • NEW PARTS
    • INTERIOR PARTS
      • SEATS
      • AUDIO VISUAL
      • METERS & GAUGES
      • TURBO TIMERS
      • AIRBAGS
    • EXTERIOR PARTS
      • BONNETS
      • BUMPERS
      • GRILLES
      • FENDERS
      • DOORS
      • TRUNKS
      • SPOILERS
      • LIGHTS
      • EMBLEMS
      • CAMERAS
    • ENGINES
    • TRANSMISSIONS
    • WHEELS & TYRES
      • WHEELS
      • TYRES
  • CUTS
  • PERFORMANCE PARTS
    • TURBOCHARGERS
    • ENGINE PARTS
    • SPARK PLUGS
    • ECU
    • MUFFLERS
    • SUSPENSIONS
    • BRAKES
    • CARBON PARTS
    • CLEANERS & FILTERS
    • TOWER & ROLL BARS
  • TRUCK PARTS
    • TRUCK CABINS
    • TRUCK BODIES
    • TRUCK DOORS
    • TRUCK BUMPERS
    • TRUCK GRILLES
    • TRUCK HEADLIGHTS
    • TRUCK TAIL LIGHTS
    • TRUCK CRANES
    • TRUCK WINCHES
    • TRUCK BATTERIES
    • TRUCK WHEELS & TYRES
      • WHEELS
      • TYRES
  • MOTORBIKE PARTS
    • MOTORBIKE ENGINES
    • MOTORBIKE ACCESSORIES
  • MOTORBIKES
    • SALVAGE MOTORBIKES
    • QUAD BIKES
    • TRIKES
    • ELECTRIC SCOOTERS
  • MARINE
    • POWER BOATS
    • SAIL BOATS
    • JETSKIS
    • MARINE ENGINES
  • FORKLIFTS
    • AUCTION FORKLIFTS
    • DEALER FORKLIFTS
    • NEW FORKLIFTS
    • TOYOTA FORKLIFTS
    • NISSAN FORKLIFTS
    • KOMATSU FORKLIFTS
    • MITSUBISHI FORKLIFTS
    • TCM FORKLIFTS
    • NICHIYU FORKLIFTS
    • REACH FORKLIFTS
    • ELECTRIC FORKLIFTS
    • GASOLINE FORKLIFTS
    • LPG FORKLIFTS
    • DIESEL FORKLIFTS
    • FORKLIFT PARTS
    • FORKLIFT SHIPPING
  • MACHINERY
    • CRANES
    • EXCAVATORS
    • MINI EXCAVATORS
    • WHEEL LOADERS
    • BULLDOZERS
    • SKID STEERS
    • ELEVATED PLATFORMS
    • BREAKERS
    • CONCRETE CUTTERS
  • AGRICULTURAL
    • TRACTORS
    • HAND TRACTORS
    • COMBINES
    • BINDERS
    • RICE PLANTERS
  • OTHER
    • GO KARTS
    • MOBILITY SCOOTERS
    • GOLF CARTS
    • BICYCLES
    • SNOWMOBILES
    • SNOW PLOWS
    • GENERATORS
    • COMPRESSORS
    • WELDERS
  • COUNTRY
    • AUSTRALIA
    • CANADA
    • KENYA
    • MYANMAR
    • NEW ZEALAND
    • PAKISTAN
    • TANZANIA
    • UNITED STATES
CARVIEW
MOTORHOMES
Select Language
HTTP/2 200 content-type: text/html; charset=utf-8 cache-control: max-age=0, private, must-revalidate date: Tue, 29 Jul 2025 07:55:45 GMT referrer-policy: strict-origin-when-cross-origin set-cookie: devcenter-next-sso-session=SmIzcHRiS1BiREFkZDZQQnZwc2FEUGNJK29TY0RITndPdUc4VkpaMkhzUGV6ZzlTYlQ0NC9jZmRocklhdW9CQ3RYUlJNWnQ1M3ZtUnZNNVZwWWJVeTMzMzgweFZWMkh3UG9zL3FMbE9Bc09aZTlYcDd2UlBuT2lPV201S3d2QXdYaTB0UFk4bzdlQVg5eVVwU3N6anBIMHQ4eUMwN2o1ZDRaekU3ZlFFVXJHa0xETDdENnpMeWY5eTJjbUZaMnZCLS0vYmJkTDhRRXo1L2RiNDBYM1dmTitnPT0%3D--308a9c1eb7e0d29babdd959086f3e43946f34ddc; path=/; secure; httponly strict-transport-security: max-age=63072000; includeSubDomains via: 1.1 spaces-router (c8e35807128d), 1.1 9a4b0759c84efb9881f8d98415c78ffe.cloudfront.net (CloudFront) x-content-type-options: nosniff x-download-options: noopen x-frame-options: SAMEORIGIN x-permitted-cross-domain-policies: none x-request-id: 3ce35a57-3d55-f0fd-cfaa-56bad1c1513d x-runtime: 0.308912 x-xss-protection: 1; mode=block content-encoding: gzip etag: W/"7bf64099231dd762b1dc773ae4f73aef" vary: accept-encoding x-cache: Miss from cloudfront x-amz-cf-pop: BOM78-P3 x-amz-cf-id: RAj1rMnoThHo4Ih9q17CGbxCB7IaJSB0nBd3XLlvFBKYg8_eokbM3w== MVCC による PostgreSQL の並列性 | Heroku Dev Center
Skip Navigation
Show nav
Heroku Dev Center Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
Heroku Dev Center Dev Center
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log in or Sign up
View categories

Categories

  • Heroku のアーキテクチャ
    • コンピューティング (dyno)
      • dyno の管理
      • dyno の概念
      • dyno の動作
      • dyno の参照資料
      • dyno のトラブルシューティング
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
    • Buildpacks
  • 開発者ツール
    • コマンドライン
    • Heroku の VS Code 拡張機能
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Node.js アプリのトラブルシューティング
      • Heroku での Node.js の動作
      • Node.js の操作
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Ruby の操作
      • Heroku での Ruby の動作
      • Ruby アプリのトラブルシューティング
    • Python
      • Python の操作
      • Python でのバックグラウンドジョブ
      • Heroku での Python の動作
      • Django の使用
    • Java
      • Heroku での Java の動作
      • Java の操作
      • Maven の使用
      • Spring Boot の使用
      • Java アプリのトラブルシューティング
    • PHP
      • Heroku での PHP の動作
      • PHP の操作
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Heroku Postgres への移行
    • Heroku Key-Value Store
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
    • Heroku Inference
      • Inference Essentials
      • Inference API
      • Heroku Inference Quick Start Guides
      • AI Models
    • Model Context Protocol
    • Vector Database
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
    • Heroku AppLink
      • Working wtih Heroku AppLink
      • Getting Started with Heroku AppLink
      • Heroku AppLink Reference
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
    • Other Salesforce Integrations
  • データベースとデータ管理
  • Heroku Postgres
  • Postgres のパフォーマンス
  • MVCC による PostgreSQL の並列性

MVCC による PostgreSQL の並列性

日本語 — Switch to English

最終更新日 2022年12月28日(水)

Table of Contents

  • MVCC の仕組み
  • MVCC の欠点

Postgres の大きなセールスポイントの 1 つは、並列性を処理する仕組みです。ルールはシンプルです。読み取りは決して書き込みをブロックせず、その逆も同様です。Postgres では、多版型同時実行制御 (Multi Version Concurrency Control) と呼ばれるメカニズムを介してこれを実現します。この手法は Postgres に特有のものではなく、Oracle、Berkeley DB、CouchDB、その他多数​のデータベースが何らかの形で MVCC を実装しています。Postgres における MVCC の実装の仕組みを理解することは、並列性の高いアプリを PostgreSQL で設計するにあたって重要です。これは実際には、困難な問題に対する洗練されたシンプルなソリューションです。

MVCC の仕組み

Postgres では、すべてのトランザクションが XID と呼ばれるトランザクション ID を取得します。これには、挿入、更新、削除のように 1 つのステートメントから成るトランザクションに加えて、ステートメントのグループを BEGIN​ - COMMIT​ で明示的にラップしたものが含まれます。トランザクションが開始すると、Postgres は XID をインクリメントし、現在のトランザクションにその XID を割り当てます。Postgres はシステムのすべての行のトランザクション情報も保存し、この情報を利用してトランザクションからの行の可視性が決定されます。

たとえば、行を挿入すると、Postgres によって XID が行に保存され、xmin​ という名前が付けられます。コミット済みで、現在のトランザクションの XID よりも xmin​ が小さいすべての行がトランザクションから可視になります。つまり、トランザクションを開始して行を挿入したとしても、そのトランザクションが COMMIT​ しない限り、その行は他のトランザクションから可視になりません。そのトランザクションがコミットし、他のトランザクションが作成されると、後者は xmin < XID​ の条件を満たしており、行を作成したトランザクションは完了しているので、新しい行は後者に対して可視になります。

DELETE​ と UPDATE​ でも同様のメカニズムが発生しますが、これらのケースに限り、Postgres は可視性を決定するために xmax​ の値を各行に保存します。次の図は、行の挿入と読み取りを行う 2 つの並列トランザクションと、トランザクションの分離に MVCC がどのような役割を果たすか示しています。

以下の図で前提としているのは次の DDL です。

CREATE TABLE numbers (value int);

MVCC による読み取り/書き込みの分 離

日常の運用の中で xmin​ や xmax​ の値を目にすることはありませんが、これらの値は Postgres に問い合わせればすぐに確認できます。

SELECT *, xmin, xmax FROM numbers;

現在のトランザクションの XID も取得できます。

SELECT txid_current();

簡単です。

さて、読者の皆さんはきっとこう思っているでしょう。「2 つのトランザクションが同じ行を同時に更新したらどうなるのか?」ここでトランザクション分離レベルの出番です。Postgres では基本的に、この状況への対処方法を制御するための 2 つのモデルをサポートしています。デフォルトの READ COMMITTED​ は、最初のトランザクションが完了した後に行を読み取り、ステートメントを実行します。待機している間に行が変更された場合、基本的には最初からやり直します。たとえば、WHERE​ 句を伴う UPDATE​ を実行した場合、最初のトランザクションのコミット後に WHERE​ 句が再実行され、WHERE​ 句の条件がまだ満たされていれば UPDATE​ が実行されます。次に示す、行を変更する 2 つのトランザクションの例では、最初の UPDATE​ が原因で、2 番目のトランザクションの WHERE​ 句が行を返しません。したがって、2 番目のトランザクションはどの行も一切更新しません。

READ COMMITTED のトランザクション分離

この動作をさらにきめ細かく制御する必要がある場合、トランザクション分離レベルを SERIALIZABLE​ に設定できます。この戦略では “変更しようとしている行が別のトランザクションによって変更されている場合は、試すこともしない” という方針を採るので、上記のシナリオは単に失敗し、Postgres の応答はエラーメッセージ ERROR: could not serialize access due to concurrent update​ (同時更新が原因でアクセスをシリアル化できませんでした) になります。このエラーを処理して再試行するか、諦めた方が良いと判断してそうするかはアプリ次第です。

SERIALIZABLE のトランザクション分離

MVCC の欠点

MVCC とトランザクション分離が実際にどのように機能するかを理解したので、SERIALIZABLE​ の分離レベルが適している問題を解決するために、別のツールを追加しました。MVCC の利点は明らかですが、いくつかの欠点もあります。

可視である行のセットはトランザクションごとに異なるため、Postgres では、古くなっている可能性があるレコードを維持する必要があります。UPDATE​ が実際には新しい行を作成するのはこれが理由であり、DELETE​ が実際には​行を削除せず、行を削除済みとマークして XID 値を適切に設定するだけである理由も同じです。トランザクションが完了すると、将来のどのトランザクションからも可視になる可能性がない行がデータベースに残ることになります。これらはデッドロー (dead row) と呼ばれます。MVCC に由来するもう 1 つの問題として、トランザクション ID はただ大きくなり続けることしかできません。32 ビットであり、サポートできるのは 約 40 億トランザクション “のみ"です。最大値に達すると、XID は最小値に戻って (ラップアラウンドして) ゼロから再開します。突然、すべての​行が将来のトランザクションにあるかのように見え、新しいトランザクションはそれらの行への可視性を得られなくなります。

デッドローとトランザクション XID ラップアラウンドの問題はどちらも VACUUM​ によって解決されます。これは定期的なメンテナンスですが、幸いにも Postgres には、設定可能な頻度で実行される auto_vacuum デーモンが付属しています。デプロイが異なれば必要なバキューム頻度も異なるため、これを注視することは重要です。VACUUM​ の実際の動作について詳しくは、Postgres のドキュメント​を参照してください。Heroku での処理​方法も参照してください。

関連カテゴリー

  • Postgres のパフォーマンス
高コストなクエリ PostgreSQL インデックスの効率的な使用

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices
  • HOME
  • ABOUT
  • AUCTIONS
  • SHIPPING
  • FEES
  • TOOLS
  • HOW
  • FAQ
  • CONTACT
 
Original Source | Taken Source