今更すぎますが、まだ3系よりも2系の方がメジャーなようなので、2系ネタです。
EC-CUBE2系のDBは、postgresqlとmysqlの2つから選べますが、postgresqlが圧倒的に早いです。
これを勘違いして、mysqlよりpostgresqlが優秀と信じている人が居ます。
EC-CUBE上での実行速度比較をしたりしてね。
EC-CUBE2系でpostgresqlが速いのはあたりまえです。
postgresqlでのみ高速に動くようにチューニングされています。
postgresql専用のクエリを使っています。
mysqlにした場合、簡易的なクエリ変換を行って実行しています。
遅くてあたりまえです。一切のチューニングが行われていません。
致命的なのは、postgresqlはビューを使って高速化しているのに対し、mysqlでは使っていません。
mysqlでもビューを使う事で、同じ速度になります。
そもそも、この程度の物にビューに使わないと重くなるってこと自体がおかしいです。
クエリ内容を見直すことで、数百倍から数万倍以上の高速化が可能です。※実話です。
ほぼすべてのクエリに問題があるので、どことは言えません。言うならば、全ての箇所です。
重いと思ったらクエリを最適化してください。天と地の差が出ます。
・意味のない処理をしていないか。※仕様変更等での消し忘れが意外とある
・インデックスを適切に使っているか。 ※インデックスがまともに無い・・・
・無駄にフルスキャンする状態になってないか
ビューと使うとカスタマイズが面倒な事になるので、避けた方が良いです。
2018年2月6日火曜日
2018年2月5日月曜日
最新版Edgeでpopstateに問題発生
最近Edgeがアップデートされ、popstateの動作が変わりました。
他ブラウザとの互換性が無くなりました。
まぁ、バグでしょう。 バグで直る事をお祈りします。
初回アクセス時に実行させないよう
if(!event.originalEvent.state) return;
は、もはやスニペット入りしていると思います。
しかし、このif文がfalseになることはありません。
nullになりません。
オブジェクトが入ってしまうようになりました。
※もちろん、if文が不要な状況下は話は別ですし、そういう議論ではないので書きません。
pushstateして,formのsubmitによるページリロードが行われた時、popstateが発火します。
このとき、originalEvent.stateがnullとならず、submit前にpushstateで登録してあるオブジェクトが入っているのです。
このため、オブジェクトが現在のページの物であるかの判定を追加する必要がでてきました。
URLが同一かの判定が楽だと思います。
他ブラウザとの互換性が無くなりました。
まぁ、バグでしょう。 バグで直る事をお祈りします。
初回アクセス時に実行させないよう
if(!event.originalEvent.state) return;
は、もはやスニペット入りしていると思います。
しかし、このif文がfalseになることはありません。
nullになりません。
オブジェクトが入ってしまうようになりました。
※もちろん、if文が不要な状況下は話は別ですし、そういう議論ではないので書きません。
pushstateして,formのsubmitによるページリロードが行われた時、popstateが発火します。
このとき、originalEvent.stateがnullとならず、submit前にpushstateで登録してあるオブジェクトが入っているのです。
このため、オブジェクトが現在のページの物であるかの判定を追加する必要がでてきました。
URLが同一かの判定が楽だと思います。
登録:
投稿 (Atom)