最初の提案を使用してください。オフセットのあるもの。これは、ページネーションを行うための「標準的な」方法です。すべてのユーザーがデータの独自のプライベートコピーを持っているため、結果セット全体をセッションに入れることは悪い考えです。パフォーマンスの問題が発生した場合は、いつでもキャッシュ(memcache)を追加できます。これにより、データにアクセスするすべてのユーザーにメリットがあります。
MySQLは常に同じ方法でデータを生成します。ページ1のレコードがページ2に表示される唯一の方法は、ユーザーがページ1からページ2に移動する時間の間に新しいレコードが挿入された場合です。つまり、心配する必要はありません。
リソースはMySQLの場合であり、結果セットを指す種類のポインターです。次に、それを操作できます(行ごとにデータをフェッチしたり、返された行の数を数えたりするなど)。グローバルではありません。