タグ

sqlとjapaneseに関するmasterqのブックマーク (21)

  • データベースについて知っておくべきこと

    architecture notesより。 この記事は、「知っておくべきこと」というシリーズの最初の記事です。様々なテーマについて、基原則からレベルアップするための入門書と考えて下さい。今日は、データベースについて説明します! BY マハディ・ユスフ データベースは、アプリケーションのほぼすべての状態を格納しているにもかかわらず、表面的にはどのように動作しているのかほとんど知られていないことに驚かされることがよくあります。しかし、これはほとんどのシステムで成功するための基礎となるものです。そこで今日は、RDBMSのインデックスとトランザクションを扱う上で最も重要な2つのテーマについて説明します。 データベース特有の癖に深く立ち入ることなく、RDBMSのインデックスについて理解すべきことを全て説明します。トランザクションと独立性レベルについても簡単に触れ、それらが特定のトランザクションに関

    データベースについて知っておくべきこと
  • #93: SEQUEL: A structured English query language

    データベースワナビーになった森田が SQL に入門しました。感想などはハッシュタグ #misreading か hello@misreading.chat にお寄せください。iTunes のレビューや星も歓迎です。 SEQUEL: A structured English query languageA Relational Model of Data for Large Shared Data BanksSpecifying queries as relational expressions: The SQUARE data sublanguage 森田の PC ノイズが聞き苦しくなってしまいましたがご容赦ください。夏のせいです。

    #93: SEQUEL: A structured English query language
    masterq
    masterq 2022/05/25
    1970年代、実装は当初なかったんですね
  • Rails カラム名変更方法 - Qiita

    はじめに プロジェクト開発をしている時にカラム名を間違えてmigrateしてしまったので 備忘録としてまとめていきます。 バージョン:Rails 5.2.3 モデル名 変更前のカラム名 変更後のカラム名

    Rails カラム名変更方法 - Qiita
    masterq
    masterq 2022/05/18
    "rename_column :テーブル名, :変更前のカラム名, :変更後のカラム名"
  • RailsでのSQL直接実行にはfind_by_sqlがベスト

    users = User.find_by_sql(['select * from users where id = ?', 1]) puts users.class.name => "Array" puts users.first.class.name => "User" puts users.first.id => 1 # 名前付きプレースホルダバージョン users = User.find_by_sql(['select * from users where id = :id', {id: 1}]) find_by_sql以外の方法 find_by_sql以外の方法もついでに紹介。 ActiveRecord::Base.connection.select_all 返り値はActiveRecord::Result、各要素はHashになっておりドットアクセスができない。プレースホルダーもA

  • Railsの生SQL概要:execute, select_all, find_by_sqlの使い方を覚える - Qiita

    Railsの生SQL概要:execute, select_all, find_by_sqlの使い方を覚えるRailsActiveRecordSQL Railsで使用する生SQL Railsにおいて、ActiveRecordのwhere等では表現できない複雑なクエリを使用してDBのデータを取得する場合、生でSQLを書く必要が出てくると思います。 しかし、AcitiveRecordで生sqlを実行するメソッドは数多くあり、用途によってどれを使用すべきか分からないという方もいるのではないでしょうか。 そこで今回はよく使用されるであろう、execute/select_all/find_by_sqlについて、どのように呼び出すのか、戻り値はなにか、どのような用途で使用すべきかについて説明します。 先に結論を書いておくと execute -> クエリの実行 select_all -> セレクト文の結果

    Railsの生SQL概要:execute, select_all, find_by_sqlの使い方を覚える - Qiita
  • SQL等価性検証ツールCosetteを使ってみた - Qiita

    はじめに 皆さん、SQLチューニングしてますか?(唐突) 私は仕事RDBMSSQLチューニングをすることが多いのですが、たまにチューニングの一環で SQL文の書き換え をすることがあります。 その際に問題になるのが、書き換えたSQL文が等価であるかどうかの確認が大変なことです。 SQL文を書き換えた場合には、想定通りの結果を取得できるか確認するために、テストをやり直す必要があります。 これが開発早期のフェーズならまだましなのですが、結合テスト以降だと手戻りも多くかなりコストがかかりますし、既に番運用が始まったシステムともなると、テスト自体が困難なこともあります。 また、複雑なSQL文だと網羅的なテストケースを作成すること自体が困難であるため、完全に正しいと確信することはできません。 なので、SQL文の書き換えの正しさを証明する良い手段はないかと考えていました。 SQLチューニングとは

    SQL等価性検証ツールCosetteを使ってみた - Qiita
    masterq
    masterq 2021/12/28
    素晴しい。こんなことができるのか。確かに発展が待たれる
  • Perfetto Trace を SQL で読む - Morrita Notes

    Perfetto は内蔵の Trace Processor を使ってトレーシング結果を SQL で集計できる。SQL を使って興味のあるデータを取り出すことで 標準の Perfetto UI では読み取りにくい傾向を可視化したり、 可視化を通して気づいた傾向を定量的に比較できるようになる。 これは Systrace にはなかった大きな利点だ。 この記事では Twitter と Instagram アプリのスクロール性能を評価する実例を交え Trace Processor の SQL インターフェイスを紹介する。 Twitter vs. Instagram ある Podcast を聞いていたら、ホストiPhone ユーザが気まぐれで触った Android 端末をレビューしていた。彼によれば AndroidTwitter アプリは iPhone に比べスクロールの出来が非常に悪いとい

  • HeatWaveは競合製品より高速

    HeatWave - 組み込みのMLによるインメモリ・クエリ・アクセラレータ 分析と混合ワークロードのMySQLのパフォーマンスを桁違いに向上できます。オブジェクト・ストレージ内のデータをクエリします。個別の分析データベースやレイクハウス・プラットフォーム、個別の機械学習(ML)ツール、抽出、変換、ロード(ETL)の重複が不要になります。MySQL HeatWaveは、Oracle Cloud Infrastructure(OCI)、Amazon Web Services(AWS)、Microsoft Azureで利用可能です。 トランザクション、データウェアハウスとデータレイクをまたいだ分析、機械学習を1つのクラウド・データベース・サービスで実現 MySQL HeatWaveは、HeatWave In-Memory Query Acceleratorを搭載したフルマネージドのデータベース

    HeatWaveは競合製品より高速
    masterq
    masterq 2021/05/17
    "分析クエリでのMySQLのパフォーマンスを400倍高速化し、数千コアにスケールアウトし、Amazon Redshiftの3分の1のコストで2.7倍高速なパフォーマンスを実現"
  • MySQL :: MySQL HeatWave パフォーマンスヘルスチェック

    masterq
    masterq 2021/05/17
    "HeatWaveがMySQLサーバーで実行されるクエリを400倍高速化し、Amazon AuroraとRedshiftの1/3のコストであることが分かります"
  • PDOフェッチパターン大全 - Qiita

    忙しい人向け Q. PDO::FETCH_ASSOCでフェッチするとき,キーを整数連番じゃなくてidにする方法は? A. PDO::FETCH_UNIQUEを組み合わせる. $sql = "SELECT id, * FROM people WHERE gender = 'female'"; $rows = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC|PDO::FETCH_UNIQUE); var_dump($rows); /* [ 3 => ['id' => '3', 'name' => 'Lucy', 'gender' => 'female'], 5 => ['id' => '5', 'name' => 'Mary', 'gender' => 'female'], ] */

    PDOフェッチパターン大全 - Qiita
  • Haskellで実装された MySQL ドライバ mysql-haskell を試してみた - Qiita

    HaskellでMySQLを使う時、僕はよくmysql-simpleを使っています。このライブラリはすごく簡単に使えるので重宝しているのですが更新が止まってたりいろいろ不満も多いです。先日Redditを眺めていたらCのライブラリのFFIではなく1からHaskellで実装したMySQLドライバが話題になっていたのでさっそく試してみました。 Pure haskell mysql driver winterland1989/mysql-haskell READMEにはmysql-simpleに不満なところが3つ挙げられています。 プリペアドステートメントとバイナリプロトコルがサポートされていない FFIのせいで並列処理に限界がある レプリケーションプロトコルのサポートがない mysql-haskellはこれらの問題を解決することをモチベーションにしています。 パフォーマンスに関してもREADME

    Haskellで実装された MySQL ドライバ mysql-haskell を試してみた - Qiita
  • MySQL 5.7にやられないためにおぼえておいてほしいこと

    2015/10/03 phpcon 2015 updated at 2016/01/13 about default_password_lifetime's default will be 0

    MySQL 5.7にやられないためにおぼえておいてほしいこと
  • トランザクションのネストの使い方まとめた(初心者向け) - Qiita

    トランザクションのネストについてまとめてみました どう記述したらネストができるの? ロールバックした時の挙動は? などなどまとめてみました 自分がよく使うMySQLRails(ActiveRecord)について記載します。他のDBやフレームワークでは多分話が変わりますのでご注意ください 前提 ネストしたトランザクションの挙動 ネストしたトランザクションって、正確な挙動がこうあるべきという決まりがあるのかどうかは筆者はよく知りません ここでは、以下のような挙動を満たすことを目的にします トランザクションの内部に、もう一つトランザクションを貼る 内側のトランザクションがロールバックした場合、外側のトランザクションには影響を与えない 外側のトランザクションがロールバックした場合、内側のトランザクションもロールバックする 内側だけコミットされてしまうと、外側のトランザクションから見ると一貫性が破

    トランザクションのネストの使い方まとめた(初心者向け) - Qiita
    masterq
    masterq 2021/01/18
    "2度目の BEGIN が実行された時、現在のトランザクションがコミットされ、新しいトランザクションが開始"/"内側のトランザクションは SAVEPOINT と書きます"
  • トランザクションをネストしたらどうなる? 内側だけロールバックできる? - Qiita

    トランザクションはRDBに対するひとかたまりの操作です。だから来入れ子も何もなく、始まりと終わりが一個ずつあるだけです。以上。 …で終わらせられないのは、それでもネストが必要になる場面があるからですね。 ありがちなのは、トランザクション開始終了処理まで込みのアプリケーション側関数・メソッドやストアドプロシージャの存在。こうした関数を、まあ関数ですから部品的に扱おうとするとトランザクションが開始した文脈下でこうした関数が呼び出されて入れ子のサブトランザクションスタート、ってことになったりします。 サブトランザクションのコミットは問題ない BEGIN TRANSACTION; INSERT ... 'A'); BEGIN TRANSACTION; INSERT ... 'B'); COMMIT TRANSACTION; INSERT ... 'C'); COMMIT TRANSACTION;

    トランザクションをネストしたらどうなる? 内側だけロールバックできる? - Qiita
    masterq
    masterq 2021/01/18
    トランザクションのネストさんDBの実装依存。。。厳しい。。。
  • MySQL のサブクエリって、ほんとに遅いの? | DevelopersIO

    こんにちは、みかみです。 今日のクラスメソッドのAWSおみくじ、RDS(t1.micro)でしたー!(昨日は Aurora!@@v はじめに 前職@アプリ開発時、MySQL のクエリチューニングをさせていただく機会がありました。 ユーザー入力のキーワードで全文検索 → 見つかったレコードを返すのですが、所要時間、約3分。。 Apache タイムアウトして画面真っ白。。。(泣きそうでした><。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリの

    MySQL のサブクエリって、ほんとに遅いの? | DevelopersIO
    masterq
    masterq 2020/11/29
    "MySQL 5.5 まで、サブクエリはやっぱり遅い"
  • サイボウズ版 MySQL パフォーマンスチューニングとその結果 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。先日親知らずを抜歯した時、つらすぎたので MySQLJOIN のことを考えて心の平静を保っていました。 サイボウズの製品のひとつである kintone はニーズに応じて自由に業務アプリのようなものを手軽に作ることができ、データの検索条件やソート条件も細かくカスタマイズ可能で、様々なレベルでのアクセス権も設定可能という非常に便利なツールです。 しかしその機能を支える裏側では複雑なクエリが発行され、MySQL に多大な負荷をかけています。サイボウズのクラウドには数十テラバイトに登る MySQL データがあり、数千万件オーダーのテーブルを複数 JOIN するクエリが毎秒のように実行されるという、エンジニア魂が滾る環境です。 現在サイボウズでは性能改善に力を入れており、僕もその業務に従事しています。例えば2018年

    サイボウズ版 MySQL パフォーマンスチューニングとその結果 - Cybozu Inside Out | サイボウズエンジニアのブログ
    masterq
    masterq 2020/10/14
    "多くの遅いクエリは MySQL の気持ちに沿って書きなおせばきっと超高速化を実現できるでしょう"
  • SQL Server / SQL Database パフォーマンスチューニングのための基礎知識 - Qiita

    投稿について 投稿は、Microsoft Learn で公開されている、「SQL Server でクエリのパフォーマンスを最適化する 」を確認していた際に、いくつかの情報を補足しながら日語化したものとなります。 SQL Server / Azure SQL Database のパフォーマンスチューニングには様々な方法があり、「このケースであればこの方法」ということを断定することは難しいのではないでしょうか。 そのため、様々なケースで利用することが可能な、チューニング方法の基礎知識 (一般論) はとても重要です。 投稿で、確認を行った「SQL Server でクエリのパフォーマンスを最適化する 」は、チューニングに対しての体系的な考え方を無償で学ぶのには適しているコンテンツではないかと思いました。 チューニング系の講義は様々なノウハウが絡みますので有償が多く、ノウハウがない状態で体系

    SQL Server / SQL Database パフォーマンスチューニングのための基礎知識 - Qiita
  • 情報処理推進機構:情報セキュリティ:脆弱性対策:安全なウェブサイトの作り方

    「安全なウェブサイトの作り方」は、IPAが届出(*1)を受けた脆弱性関連情報を基に、届出件数の多かった脆弱性や攻撃による影響度が大きい脆弱性を取り上げ、ウェブサイト開発者や運営者が適切なセキュリティを考慮したウェブサイトを作成するための資料です。 「安全なウェブサイトの作り方」改訂第7版の内容 第1章では、「ウェブアプリケーションのセキュリティ実装」として、SQLインジェクション 、OSコマンド・インジェクション やクロスサイト・スクリプティング 等11種類の脆弱性を取り上げ、それぞれの脆弱性で発生しうる脅威や特に注意が必要なウェブサイトの特徴等を解説し、脆弱性の原因そのものをなくす根的な解決策、攻撃による影響の低減を期待できる対策を示しています。 第2章では、「ウェブサイトの安全性向上のための取り組み」として、ウェブサーバの運用に関する対策やウェブサイトにおけるパスワードの取扱いに関す

    情報処理推進機構:情報セキュリティ:脆弱性対策:安全なウェブサイトの作り方
  • 第2章 PostgreSQLの内部構造―プロセスやメモリの流れ、特徴的な機能のしくみ | gihyo.jp

    図1 主なプロセスの流れ PostgreSQLは、ライタがデータファイルやインデックスファイルをディスクに更新しています。ただし、その更新は、コミットに合わせてリアルタイムで行われているわけではありません。性能向上のため、チェックポイントと呼ばれる更新タイミングが発生するまでは、更新があっても共有バッファにデータを貯めておきます。この貯められたデータをダーティページと呼びます。そしてチェックポイントのタイミングで、チェックポインタがダーティページをディスクに書き込みます。 そのため、共有バッファに更新情報を貯めている間に障害が起きると、ダーティーページを失う可能性があります。それを防ぐために、共有バッファ中のデータに対してどのような更新を行ったかの情報を保存しているのがWALです。WALはコミットのタイミングでWALライタが記録しています。クラッシュリカバリが必要になったときは、WALの中

    第2章 PostgreSQLの内部構造―プロセスやメモリの流れ、特徴的な機能のしくみ | gihyo.jp
    masterq
    masterq 2019/05/15
    "PostgreSQLは,マルチプロセスタイプのアーキテクチャです。よく比較対象に挙がるMySQLは,マルチスレッドタイプのアーキテクチャです。" 使おうPostgreSQL
  • SQLパフォーマンス詳解: 開発者のためのデータベースチューニング解説書

    前書き インデックスの 内部構造 インデックス リーフノード 検索 ツリー(Bツリー) 遅いインデックス パートI where 句 等価 演算子 プライマリキー 複合インデックス 遅いインデックス パートII 関数 - where 大文字・小文字を区別する 検索 ユーザ定義 関数 インデックスの作り過ぎ パラメータ化 クエリ 範囲 検索 大なり、小なり、 BETWEEN LIKEフィルタに 対するインデックス インデックスの結合 部分インデックス OracleにおけるNULL NULLに対する インデックス NOT NULL 制約 部分インデックスを エミュレートする 処理しにくい条件 日付型 数値文字列 列の連結 スマートなロジック 数式 パフォーマンスと スケーラビリティ データ 量 システム 負荷 レスポンス タイムとスループット 結合 処理 入れ子 ループ ハッシュ 結合 ソートマ

    SQLパフォーマンス詳解: 開発者のためのデータベースチューニング解説書