タグ

ブックマーク / atsuizo.hatenadiary.jp (6)

  • MySQLで直感的じゃない動きをするRAND()とSYSDATE()について - なからなLife

    端的にいうと SELECTのWHEREの条件の「右辺」に、RAND()やSYSDATE()のような非決定性関数を使うと、想定外のことが起こる。 戻ってくる行数が想定と異なる。 Indexが効かなくなる。(テーブルフルスキャン走る) どっちもなかなかのインパクトです。 追記:2019/05/30 PostgreSQLMySQLと同じ挙動でした。(9.6と10系で確認) Oracleは、MySQLやPostgreSQLとは異なり、想定通りの件数が返ってきますし、Indexも効いてました。(11g R2で確認) 追記:2019/05/31 「PostgreSQLMySQLと同じ」なのは、「ランダム関数利用時の挙動」です。日付系は調査しきれてません。 公式ドキュメントを読む限り、clock_timestamp()やtimeofday()を意図的に使わない限り、1つのSQLの中で違う日時を取り直

    MySQLで直感的じゃない動きをするRAND()とSYSDATE()について - なからなLife
  • MySQL 8.0.14でSELECT COUNT(*)が加速する!- 「innodb_parallel_read_threads」検証その1 - なからなLife

    それは突然やってきた MySQL 8.0.14がGAされました。 dev.mysql.com まあ、MySQLは結構な頻度でリリースがありますし、「GAとはなんぞや」との名言が生まれる程度に、マイナーリリースでも機能が増える、パラメータが増える、既存パラメータのデフォルト値が変わる、といったことが発生するかわいいヤツです。 まあ、あとでリリースノート読んでみるか、と思いつつ、ビールを飲みながらYoutube垂れ流してボケーっとしているところに、新しいものが出てくるとリリースノートとソースコードを読み漁る某APIの人のツイートが深夜に流れてきて、ふと気になったのが、今回のテーマである「innodb_parallel_read_threads」です。 InnoDB: InnoDB now supports parallel clustered index reads, which can im

    MySQL 8.0.14でSELECT COUNT(*)が加速する!- 「innodb_parallel_read_threads」検証その1 - なからなLife
  • MySQLに対して定期的に実行して結果を保存しておくと幸せになれるアレ - なからなLife

    ワンライナー mysql -u ユーザ -pパスワード -h 接続先 -e "SQL文" | sed -e 's/\t/\" \"/g' | sed -e 's/^/\"/g' | sed -e 's/$/\"/g' | sed -e "s/^/$(date '+%Y%m%d %H:%M:%S') /g" >> ファイル パスワードを生テキストで書くなって人はゴニョゴニョしてください。 追記:ゴニョゴニョするはなし、書きました。 MySQLで幸せになれるヤツの続き-パスワードを隠蔽する方法 - なからなLife 取りたい情報に応じて、権限が異なります。DBのroot相当の権限があるといいのですが、少なくとも「全スキーマへのSELECT」と「PROCESS」は必要になるはず。 何するやつ? MySQLにログインして、-eの後に指定したSQLを実行して、ログアウトする。 SQLの結果をパイプで

    MySQLに対して定期的に実行して結果を保存しておくと幸せになれるアレ - なからなLife
  • SQLを繰り返し実行したら段階的に応答速度が上がった話 - なからなLife

    MySQL Casual Advent Calendar 2016 - Qiitaの6日目の記事です。 AdventCalendar自体初参加でドキドキ、してたら、成り行きで2日連続。 コレ用のきれいなエビデンス取れるような環境要していなかったので、普段より荒っぽいですが、Casualな感じで失礼します。 大きなテーブルを繰り返しSELECTしてたら、挙動が変わったんですよ。 バッファに載っているなら載っているで早いだろうし、載っていいなら最初ガッツリ遅くて、次からグイっと速くなるだろうと思っていたんですよ。 バッファに載りきらないなら、何回やっても遅いだろうと思っていたんですよ。 で、ちょいと計測的なことをやってた関係で、同じSQLを何度か叩いて平均、中央を見ようと思っていたんです。 そしたら、 45.71秒、44.90秒、24.44秒、13.32秒、13.12秒・・・ と、段階的に応答

    SQLを繰り返し実行したら段階的に応答速度が上がった話 - なからなLife
  • MySQLのトランザクション制御がキモい話 - なからなLife

    MySQL Casual Advent Calendar 2016 - Qiitaの5日目の記事です。 AdventCalendar自体初参加でドキドキ。 トランザクションの開始は、BEGINしたときじゃない! MySQLでは、BEGIN(START TRANSACTION。長いので、以下、特筆すべき場合以外は「BEGIN」で)を宣言しても、内部的にはまだトランザクションを開始してません。 SQLを投げたタイミングで、トランザクション開始になります。 このとき、更新のない、FOR UPDATEもないSELECT文でも、トランザクションが開始されます。 なにそれきもい。 「AutoCommit=ON/OFF」による違い AutoCommit=ONのとき トランザクションはSQLを発行するたびにBEGIN/COMMITで完了し、ロールバックできません。 複数SQLを束ねて1つのトランザクション

    MySQLのトランザクション制御がキモい話 - なからなLife
  • ネットワークトラフィックという、古くて新しい問題。 - なからなLife

    クラウドサービスバンザイ! ハードウェアの置き場要らないし、資産管理もほとんどいらないし。 負荷急増にもすぐ対応できるし、サーバー納品待ちとかないし。 「このロット、ハズレだなー」、とかないし。 Saasレベルののもに至っては、ほんとに「1ライセンス月いくら」しか気にしなくて良いからなー。 いいよのなかになったもんだー。 情報システムに資金を回しにくい非IT系ベンチャーにとっても、非常に嬉しい時代になりました。 そして、ふと沸き起こるトラブル 情シスがサーバーを手放して、Iaasを活用した。 情シスが開発を手放して、Paas・Saasに乗っかった。 そして残ったのは、ほんとに低層の「ネットワーク」の部分。 情シスが呼び出されるトラブルの多くが「ネットワークが繋がらない、遅い」という問題に。 そんなに複雑な構成を組んでいない、設定すべき情報もほとんどないネットワークで、トラブルが起こります。

    ネットワークトラフィックという、古くて新しい問題。 - なからなLife
    slay-t
    slay-t 2014/07/16
  • 1