タグ

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

  • OracleからPostgreSQLに乗り換えたい人に送る何か - なからなLife

    Calendar for PostgreSQL | Advent Calendar 2021 - Qiita の10日目の記事です。 思い当たる節がある人は、今の見積もりの数倍の時間と予算を確保してからキックオフして欲しい。 多分、そのまま走ると誰か倒れるから。。。 で終わりにするわけにはいかないので、いくつか書きます。 もちろん、SQLDBMSによって「方言」があるので、使える構文、関数名が違うってのは当然あるのですが、それ以外のところを中心に。 PostgreSQLのサーバーサイドエンコーディングはShiftJISをサポートしていない 今どき、新規で立てるデータベースはUTF8を選ぶよねーキャハハ、と思っても、何世代もバージョンアップしてきたOracleや、塩漬けされたOracleなんかは、ShiftJISを使っているところも多いのではないでしょうか。 自分で文字コードマッピングの処

    OracleからPostgreSQLに乗り換えたい人に送る何か - なからなLife
  • HammerDBをCLIで使うなど(8):PostgreSQLにTPC-Hを実行してみる - なからなLife

    的な流れ 前回の「MySQLにTPC-H」とほぼ一緒です。 淡々と進めていきましょう。 対象DBMSとベンチマークの選択 hammerdb>dbset db pg Database set to PostgreSQL hammerdb>dbset bm TPC-H Benchmark set to TPC-H for PostgreSQL 詳細パラメータの表示と設定 hammerdb>print dict Dictionary Settings for PostgreSQL connection { pg_host = localhost pg_port = 5432 } tpch { pg_scale_fact = 1 pg_tpch_superuser = postgres pg_tpch_superuserpass = postgres pg_tpch_defaultdbase

    HammerDBをCLIで使うなど(8):PostgreSQLにTPC-Hを実行してみる - なからなLife
  • 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のGLOBAL_STATUSとGLOBAL_VARIABLES - なからなLife

    今更MySQL5.7を扱うにあたって MySQL5.6とMySQL5.7のパラメータ差分をあらためて見直してたら、「show_compatibility_56」という、プロダクトのアーキ移行期間にありがちな「いかにも」な名前のパラメータがありまして。 これは何? 「SHOW [GLOBAL] STATUS」や「SHOW [GLOBAL] VARIABLES」という、とてもお世話になるコマンドがあり、その実、テーブルに格納されている値を表示していたわけで、テーブル*1があることから、SELECT文を使うことでSHOWコマンドよりもより柔軟な条件式などを使って参照ができたわけです。 そんなテーブルたち、MySQL5.6まではInformation_Schemaにあったのが、MySQL 5.7からはPerformance_schemaに移動するぞ、ってドキュメントに書いてあります。 その説明のた

    MySQLのGLOBAL_STATUSとGLOBAL_VARIABLES - なからなLife
  • 「新しいLinuxの教科書」あれはいい本だ。 - なからなLife

    所属している会社は小さいし、そこそこ実績のある中途しか採用していないので、Linux入門者を相手にする機会はそうそうないです。 なので、ここで吠えておくことにします。 「新しいLinuxの教科書」あれはいいだ。 新卒SE向け研修(特に文系も採用しているようなところで)のテキストとして使うもよし、とりあえず自由に使えるLinux環境立てられるようになったらあとは自分で写経しながら読んでおけ、でも、いい感じに使える内容が書かれていると思います。 また、体系的に学ぶこと無く、うまいことやり過ごしてきてしまった中堅以上のエンジニアが読めば、学び漏れていたこと、表面的にしか理解していなかった話ことのフォローアップにもつながるでしょう。 深すぎず浅すぎず、狭すぎず広すぎず、よくまとまってます。 深みが必要になれば、その領域を掘り下げたに進めばいいですしね。シェル芸とか。 同系統のを読み比べたわ

    「新しいLinuxの教科書」あれはいい本だ。 - なからなLife
  • MySQLのセッションタイムアウトの制御 - なからなLife

    timeout系パラメータはいくつかあるけれど 新規接続時のタイムアウト(connect_timeout)ではなく、一度確立した接続がタイムアウトで切断される現象に影響するタイムアウト設定のお話。 ERROR 2013 (HY000): Lost connection to MySQL server during queryにお悩みのアナタのためのヤツです。 「interactive_timeout」「wait_timeout」 ・interactive_timeout サーバーが対話型の接続で、対話型の接続を閉じる前にアクティビティーを待機する秒数。対話型クライアントは、mysql_real_connect() で CLIENT_INTERACTIVE オプションを使用するクライアントと定義されます。wait_timeoutも参照してください。 https://dev.mysql.com

    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
  • ORDER BYで、単純な昇順降順「以外」で並べる! - なからなLife

    いやー、知らないって怖いね。 なんだこのキモいSQLは、って思ってしまったけど、調べているウチに、これちゃんとSQL構文に則ってる!こちらが間違ってた!って事がわかっていきました。 あえて、知らなかった所から勢いで書いていたのを、そのままにしてみました。 キモいSQLコードを偶然見つけた SQLにおけるORDER BYって、その後にカラム(およびそのエイリアス)を並べてソート順として使用するわけですが、MySQL案件のお仕事の中で偶然こんなものを見つけて、絵に描いたような二度見リアクションしました。 SELECT * FROM tbl ORDER BY id = 23; -- (1) SELECT * FROM tbl ORDER BY FIELD( id, 23, 234, 543, 23 ); -- (2)こうした、「ORDER BYに、あたかもWHERE句で絞り込む条件指定のような使

    ORDER BYで、単純な昇順降順「以外」で並べる! - なからなLife
  • Oracle文化が根強いSIerと一緒にMySQL案件に関わると質問される5つのこと - なからなLife

    タイトル通りですが、とりあえず列挙 STATSPACK的なもの、ないの? ありません。 価格差考えてください。 TuningPack的なもの、ないの? (ry 過去に実行したSQL、誰がいつ実行したか追えないの? いわゆる監査ログってやつ。 無料でやりたいなら、generarl_logで全SQL吐いてください。 あとは有償/無償でプラグイン追加すればできるようになりますよ。 I/Oなり、なんらかのリソースをうけどね。 監査やらない前提で必要スペック見積もっておいて、事故ってから騒ぐのやめてください。 クエリ遅いんだけど! Oracleと同じ感覚で一文でバッチリ取ってくる数百行のクエリ書いて悦に入ってないで、実行計画まず見てくれ。 MySQLで相関サブクエリが死ぬほど遅いってことは、一度でも自分で調べる意思があってググッていれば、嫌でも目に入るだろ。 まさにggrks(死語? この相談を受

    Oracle文化が根強いSIerと一緒にMySQL案件に関わると質問される5つのこと - なからなLife
  • topコマンドからログファイルを出力させるために、sedとawkをかじる - なからなLife

    topの概要 語り尽くされてますし、manにもすごく丁寧に説明がありますので、見た目だけ。 top - 10:12:59 up 42 min, 3 users, load average: 0.00, 0.01, 0.05 Tasks: 159 total, 1 running, 158 sleeping, 0 stopped, 0 zombie Cpu(s): 0.6%us, 0.4%sy, 0.0%ni, 96.8%id, 2.1%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 4048536k total, 1446716k used, 2601820k free, 36404k buffers Swap: 4194300k total, 0k used, 4194300k free, 1124068k cached PID USER PR NI VIRT RES S

    topコマンドからログファイルを出力させるために、sedとawkをかじる - なからなLife
  • 無線LANは、素人は手を出さない方がいい - 中小事業所のオフィスインフラを考える - なからなLife

    今やオフィスも家庭も無線LANが当たり前になってきて、兼任情シスだろうがなんだろうが無線の面倒まで見なくてはいけないです。 そして、あまりにも便利なので利用者のニーズが高く、ちょっと不安定だとクレームも声高になりがちです。利用者自身で解消できることもあるのにー、みたいなイライラもあります。 実際トラブルに見舞われると、無線は目に見えない分、対処がしづらいです。 そんな無線LANが、今回のテーマとなります。 勉強なしに無線LANの世話をするのはキツイのです 適当に買ってきた機材をつないで、割と簡単にネットにつながってしまう製品も多いのですが、この勢いで設置すると早晩破綻します。 勉強する時間も気力もないなら、それを素直に認めて業者に任せましょう。 自宅で無線LANを運用していて、SSIDとパスワードと暗号化のところを理解してきちんと設定が出来ているのであれば、アクセスポイント1台まではなんと

    無線LANは、素人は手を出さない方がいい - 中小事業所のオフィスインフラを考える - なからなLife
  • ネットワークトラフィックという、古くて新しい問題。 - なからなLife

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

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