![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.2ベストアンサー
- 回答日時:
#1です。
cacheが効かないことは無いと思いますよ。
SSDのプチフリ対策のRAMDISK関連の記述とかにも良く載っていますが
SSDが速いといっても所詮数百MB/secレベルです。
それに対してcache(メモリ)は数千MB/secレベルなので10倍以上速くなるはずです。
処理時間が変わらなかったのであればおそらく最初からメモリに載っていたのだと
思います。
OSを再起動した直後に普通に一発目でselect count(*) from table_name;
とする場合とcacheに載せてから(alter table...だけではキャッシュには載りません
その後select * from table_nameを行って初めてキャッシュに載ります)
select count(*) from table_nameとするのでは格段の差が生まれると思います。
実際に計測するときにselect * from table_nameでやってしまうとDISKやメモリへの
アクセス速度だけではなく、結果の画面表示の時間がほとんどになってしまって
差は生まれない(隠れてしまう)と思います。
No.1
- 回答日時:
ハードウェア的にであればいくらでもあるかと思います。
・ストレージのキャッシュ容量を大きくしてそこに予め朝バッチなどで載せておく
(これはストレージのキャッシュではなくBUFFER_CACHE上でも同様ですが)
・ストライピング数を増やす
・ディスク自体の回転数を上げる
・ディスクのインタフェースを見直す SATA<SAS<FC<SSD
・ストレージとのインタフェースを見直す NAS<iSCSI<FC
上記はDBサーバローカルでの話しで、
サーバとクライアントの速度を向上したいのであれば
ソフトウェアレベルの対処として
・MTU、SDU、TDUパラメータを見直す
・OCIクライアントキャッシュを使う(11g~)
といった形です。あと、DBサーバ上でチューニングするソフトウェアとしてのパラメータも
非常に色々とあるかと思います。
DB_MULTIBLOCK_READ_COUNT、BUFFER_CACHE_SIZE、DB_BLOCK_SIZE、
テーブルのキャッシュ常駐化などなど...
この回答への補足
alter session set db_file_multiblock_read_count=128
とか
alter table hogetable cache
とかが代表的な手段なようだったので試してみましたが、
既にSSD化しているためか余り効果が認められませんでした。
ただし、HDに載せてる場合には、alter session set db_file_multiblock_read_count=128
が強烈に効きました。
後出来ることといえばSSDのデフラグ位かとおもってますが、
intel製のSSDではデフラグ効果は薄いときくし悩ましいところです。
LAN周りはJumboFrameしてみましたが、当方の場合にはあまり効果なかったです。
SSDに載せている場合、FullScanのtuningは余り要らないというか、できないのかも...
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブル名を[]でくくらないと...
-
CLOB型へのINSERT
-
SQL*Loaderをダイレクトモード...
-
Oracle複数の表をもとにmerge文...
-
1つのテーブル・2つの列を結合...
-
count(1)とcount(*)の違い
-
ダイレクトインサートでテーブ...
-
エクセル マクロ A列の <table>...
-
Viewにインデックスは張れ...
-
postgreSQLのint型は桁数指定が...
-
異なるスキーマからデータを抽...
-
ACCESS 複数テーブル・複数フィ...
-
INDEXの無効化
-
他の処理でselectさせないよう...
-
データを削除しても表領域の使...
-
列が255以上のCSVファイルをAcc...
-
Data Pump で大量データインポ...
-
エクセルからアクセスにインポ...
-
長年放置しているOracleを…なん...
-
Oracleはどの程度まで巨大なテ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CLOB型へのINSERT
-
truncate文で全テーブルを一気...
-
count(1)とcount(*)の違い
-
テーブル名を[]でくくらないと...
-
Oracle複数の表をもとにmerge文...
-
oracle sqlで先頭の1件を取得
-
Oracle上のテーブルからCREATE ...
-
oracleのプライマリ・キー名の変更
-
複数テーブルのUPDATE
-
1つのテーブル・2つの列を結合...
-
SQLのto_char関数の未定義エラー
-
Oracle テーブルの列削除
-
グループの数を取得したい
-
sqlplusで実行したSQLの結果を...
-
インラインビューの更新権限に...
-
alter table でチェックボック...
-
主キーが二つのテーブルのselec...
-
あるデータベースの表を全部消...
-
CASCADE CONSTRAINTSについて
-
Oracle9i v$sysstatの解釈
おすすめ情報