4Dのフィールドタイプ「UUID」は,GUIとランゲージにおいて文字列のように扱われますが,内部的には128ビット整数であり,データベースエンジンの検索も文字列ではなく整数値に対して実行されます。キャッシュに格納されるのも32
文字の16
進数(64
バイト)ではなく,128
ビットの整数(16
バイト)です。
UUIDプライマリーキーのインデックス検索は最適化されており,まず,前半の64
ビット値に対して検索が実行され,複数のレコードがヒットした場合には,後半の64
ビット値に対して絞り込み検索が実行されます。UUIDの特性により,ほとんど場合,前半の検索だけで1
件のレコードが特定されるため,UUIDプライマリーキーの検索速度は,実質的に64
ビット整数型のプライマリーキーと遜色ありません。
v19r6以降,プロジェクトモードのチーム開発ができるようになりました。開発モードが有効にされている場合,クライアントはネットワークファイル共有システムを介してサーバー側のプロジェクトにアクセスすることになります。
開発モードのクライアントは,常にローカルのプロジェクトフォルダーを最新に保つため,更新されたファイルを特定し,必要に応じてリロードするようになっています。通常,この処理は瞬時に完了します。しかし,サーバーがWindowsの場合,macOSのSMBクライアントで開発モードのパフォーマンスが著しく低下することが観察されています。同じサーバーに接続しているWindowsのSMBクライアントでは問題ありません。パフォーマンスの低下は,メソッド数が300,000
程度のプロジェクトで顕著です。
調査により,macOSのAPIから間違った情報が返されるため,大量のリロードが頻繁に発生していることがわかりました。問題を回避するため,macOSでプロジェクトモードのチーム開発をする場合,SMBではなく,NFSのファイル共有を使用することが勧められています。