SQL*Plusの入門基礎。
SQL*Plusの入門基礎。
以下の5ステップで,適切なインデックスを作成し,SQLを高速化できる。 (1) パフォーマンスを改善すべきSQL(もしくはカラム)を特定 (1−1) ログを閲覧し,実行秒数の大きいものを抽出する。 (1−2) 統計テーブルを閲覧し,よく利用されるテーブルを特定する。 (2) 該当SQLのプランやコストを確認 (3) 該当カラムに対してインデックスを作成 (4) インデックスが作成されたことを確認 (5) SQLのプランやコストが改善されたことを確認 補足 ※↑ もくじジェネレータ で自動生成 DBはPostgreSQLを想定。 (1)パフォーマンスを改善すべきSQL(もしくはカラム)を特定 まず,インデックスを作成すべきカラムを見極める。 その方法は2つある。 (1−1)ログを閲覧し,実行秒数の大きいものを抽出する。 SQLの実行ログを閲覧する。 たとえば,Ruby on Railsなら,
CakePHP 1.2.x, 1.3.x, 2.x の Paginate / PaginatorComponent に SQL インジェクション可能な脆弱性 CakePHP(1.2.x 以降全て)の Paginate / PaginatorComponent にて SQL インジェクション可能な脆弱性が見つかりました。 すでに cakephper さんの blog でも注意勧告されていますが、 連休中にリリースされた情報ということで見落としている人もいると思うので、こちらでも。 内容 この脆弱性を悪用すると Paginate / PaginatorComponent にて SQL インジェクションが可能となります。 現在は影響の大きさを考慮して、公式サイトでは脆弱性の詳細は明らかにされていませんが(一定期間、ユーザのアップグレードを待って公開するようです。)、私が開発環境で試したところ、S
ここ最近、チーム内でSQLのレクチャー会をやっています。世間的にはプランナーの人や営業の方がSQLを書くのもそれほど珍しいことではなくなってきていると思いますが、チーム内ではまだまだ一般的ではないです。なんとかしていきたい。 SQLレクチャー会の目的はこんな感じです。 チーム内のSQL / 分析力の底上げ データの民主化的なやつ データライフサイクルの改善 集計側であれこれ無理に頑張るより、入力データを集計側に合わせてもらうほうが圧倒的に省力化されることが多い データの入力側と集計側の意識を合わせることで、チームのデータ分析のしやすさを高めていきたい 毎月、毎期末作っているスプレッドシートの自動化 手間を減らしたり、手作業によるミスを減らしたり このエントリをきっかけに「うちでも似たことやってるけど、この取り組みをやってみたらさらにうまくいったよ」といったことが知れるとうれしいです。 背景
MySQLのジョインが遅いことでSQL全般のジョインが遅いと思われることがあるように、NoSQLの中でもMongoDBが比較的広く使われるようになってきた今、MongoDBの欠点がNoSQLの欠点だと勘違いされるようになってきているのではないか。「SQL Performance Explained」著者Markus Winand氏の指摘。 昨日(9/30)の夕方、私は「SQLに対するMySQLのように、NoSQLに対するMongoDBにはよくない面がある」とツイートをした。あいにくそのツイートには説明が欠けていた。とはいえ1つのツイートに全ての必要な説明を含むことはできないだろうから、この記事で説明しよう。ツイートへの返事として受け取ったいくつかの疑問に答えられればと思う。 まず最初に、私は多言語永続化の考え方に賛同はするが、NoSQLの熱狂的支持者ではないということを知っておいてほしい。
【golang】sqlcコマンドで「SQLクエリから型安全なGoコードを生成」し、生産性を上げたい by nao · 2022年6月25日 前書き:sqlcとは 本記事は、kyleconroy/sqlcの基本的な情報を紹介します。 sqlcは、DBスキーマ(DBテーブル定義)、SQLクエリ定義、設定ファイルの3点をインプットとして、型安全なCRUDコード + DBテーブルに対応したモデル(構造体)を自動生成します。ここでのモデルの自動生成には、複数テーブルをJOINしたクエリ用の構造体も含まれます。 個人的な視点では、sqlcは「SQLクエリを検証してから、そのクエリを実行するGolangコードを書いて、クエリ結果を受け取るための構造体を書くのが大変」という課題を解決するツールです。独自のDSL(Domain Specific Language)は殆ど登場しないので、SQLをゴリゴリ書ける
1. 届け先を管理する新設のDBサーバーで、バッチ処理時間が想定の6~7倍と判明 2. 一括ロードツールを使い、メモリー上での処理を活用して1時間以内に収めた 3. SOAサービスの粒度は、カスタマイズの手間を減らすため単純な機能単位にした 「1時間が要件のバッチ処理に当初、6~7時間もかかった。工夫を重ねて、ようやく時間内に収められた」(ヤマトシステム開発 グループソリューションカンパニー 次期NEKOプロジェクト マネージャー 田中諭氏)。 ヤマト運輸が5年ぶりの刷新を進めている基幹システム「第7次NEKOシステム」。住宅に送る「宅配」から、住宅に住む個人の都合に合わせて送る「個配」を目指したものだ。2010年9月には、送り状に記載された届け先の個人名や住所などを登録した「届け先DBサーバー」を新たに稼働させた。これまで送り状に書かれた届け先は、郵便番号など一部の情報しかシステムに登録
大したことは書いてありません。 気付いたことのメモ程度です。 『理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus) 』を少し本屋で立ち読みしました。(ノットワーキングプアにあえいでいるので立ち読みしかできない(´・ω・`)) この本の中で履歴系テーブルの扱い方というのに丸々一章が割り当てられていました。 だいたいこんなことが書かれてたと思う。 「時間軸と直交していない」という点は、履歴テーブルは過去の事実の集合で、データを取得する条件が変われば結果が異なるのは当たり前だと思うんだけども。— enum (@enum) 2015, 3月 16 たしかに、RDBMSでは履歴データというのは相性が悪い。 僕は陸上競技を見るのが好きなので、これのデータモデルをたまに考えたりしています。で、選手の氏名が変わることあるよなーと考えると、こ
sqlmap は SQL インジェクションに特化したオープンソースのペネトレーションテストツール。 これを使うと Web アプリケーションの特定のパラメータに SQL インジェクションの脆弱性があるか否かを確認しやすい。 注意: 外部のサーバに使うことは攻撃となるので絶対にしないように。 今回使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.12.6 BuildVersion: 16G29 $ sqlmap --version 1.1.8#stable $ python --version Python 2.7.10 インストール sqlmap は Homebrew でインストールできる。 $ brew install sqlmap これで sqlmap コマンドが使えるようになる。 $ sqlmap --vers
以前このブログでも取り上げたことのある神戸デジタル・ラボの近藤伸明氏がThink IT上で「SQLインジェクション大全」という連載を執筆しておられる。その第三回「SQLインジェクションの対策」を読んで以下の部分が引っかかった。 バインド機構とは、あらかじめSQL文のひな型を用意し、後から変動個所(プレースホルダ)に実際の値(バインド値)を割り当ててSQL文を生成するデータベースの機能だ。バインド値はエスケープ処理した後にプレースホルダにはめ込むので、悪意あるSQL文が挿入されても、その実行を阻止することができる(図1-2)。 http://thinkit.jp/article/847/1/ たしかにエスケープ処理を使ってバインド機構を実装する場合もある。JavaとMySQLの組み合わせでUnicodeのU+00A5を用いたSQLインジェクションの可能性 | 徳丸浩の日記から派生して、MyS
WebTeckerのエントリーから、CSS, JavaScript, AJAX/JavaScript Frameworks, ActionScript, PHP, SQL, ASP, C# and VB.NET, C++などのチートシートを紹介します。 Programing Cheat Sheets ActionScriptのチートシート ActionScript Cheat Sheet Ajax/JavaScript Frameworks Prototype Cheat Sheet Scriptaculous Cheat Sheet(PDF) MooTools Cheat Sheet jQuery Cheat Sheet YUI Cheat Sheet
ロックの仕組み(その2)-オブジェクトのロックタイプ 前回「第27回 トランザクションの一貫性を保証するロック」は、トランザクションの4つの分離レベルの説明をしました。今回は、この分離レベルを実現するデータベースサーバのロック機構に触れてみましょう。実際にどのような仕組みでデータベースサーバがロック制御を行っているかを理解することで、トランザクション機能を利用した際に起こりやすい問題点を、あらかじめ予測できるようになると思います。 今回は、初めに、ロックの状態を取得するシステムストアドプロシージャ「sp_lock」の定義を若干拡張した「sp_lock_detail」ストアドプロシージャを作成しましょう。
株式会社ジーワンシステムの代表取締役。 新しいものを生み出して世の中をあっといわせたい。イノベーションってやつ起こせたらいいな。 ぶっちゃけて、SQL Serverも、Oracleも、フリーのPostgreSQLも、RDBMSとしての本質的な性能差は本当に小さい。そのためRDBMSのベンダーを選択するのは、バックアップとか、レプリケーションとか、クラスタリングなどの機能や関連ツールのできと、IDEとの相性などを検討するのが良いでしょう。 しかし、一般的にあまり検討の対象になってない部分が、実は一番大きな違いだったりします。わたしは、SQL ServerとOracleの差で、もっとも大きいのはストアドプログラム(プロシージャ・ファンクション)の書き方(構文)の違いだと思います。 単純なロジックはOracleの方が書きやすい。SQL ServerのIfなどのステートメントブロックにBEGIN
[速報]Windows、Linux、Dockerに対応した「SQL Server 2017」正式版リリース。Microsoft Ignite 2017 マイクロソフトはフロリダ州オーランドで開催中のイベント「Microsoft Ignite 2017」で、SQL Server 2017の正式版を10月2日にリリースすると発表しました。 SQL Server 2017 brings the power of SQL Server to Windows, #Linux & #Docker containers for the first time: https://t.co/hY5k2Ev4UH#MSIgnite pic.twitter.com/G1CHtHalXm — Microsoft SQL Server (@SQLServer) 2017年9月25日 SQL Server 2017はW
こんにちは、EC基盤グループ 商品情報基盤チームの江村です。今回は私が所属している商品情報基盤チームで構築、運用を行っているシステムについてお話します。 モノタロウでは以前から記事になっていますが、検索システムの移行を行っており、現在商品検索ページの裏側の検索システムのSolrからElasticsearchへの切り替え*1が完了しました。 私が所属している商品情報基盤チームではElasticsearch、Spannerに入れるための商品情報の作成とSpannerおよび、Spannerからデータを取得するAPIの運用を行っています。今回はその中でもElasticsearch、SpannerのためのBigQueryでの商品情報作成処理について取り上げます。(詳しい検索部分の構成については以前の記事を参照ください) システム移行の背景 移行による設計ポイント 「MySQL + Python」の処
パフォーマンス向上の最短コースを知る Oracle SQLチューニング講座(1) SQLチューニングでDBパフォーマンスは数百倍も向上する。まずはRDBMSの構造を知り、チューニングの優先順位を理解しよう
NTT オープンソースソフトウェアセンタ 板垣 貴裕 共通表式 WITH 句と再帰SQL (WITH RECURSIVE) は PostgreSQL 8.4 の新機能です。WITH と WITH RECURSIVE それぞれの説明と、実際の利用例として再帰クエリを使ったロック競合解析の方法を解説します。 共通表式 WITH 句 あるクエリの中で他のクエリの結果を使う方法には、既にサブクエリがあります。WITH 句は、サブクエリの結果に名前をつけ、クエリの複数の箇所からその結果を参照するための構文です。そのクエリの中だけで使用できる一時表 (TEMP TABLE) を作るのに近い動作になります。 利用例としては、あるサブクエリの結果を複数の列と比較する場合が挙げられます。例えば以下のように、表 keyword_list から取得した結果を、表 document の keyword1, key
Vi/vim emulation for Visual Studio, SQL Server, Word & Outlook
例; (MS):MySQLとSQL Serevr (M*S):MySQLの特定バージョンや、関連する注意事項に記載されている特定条件に関するもの、およびSQLServerを示す。 目次 SQL Injection Cheat Sheatについて 文法のリファレンス、攻撃のサンプル、狡猾なSQLインジェクション小技 1行コメント SQLインジェクション攻撃のサンプル インラインコメント 典型的なインラインコメントSQLインジェクション攻撃のサンプル MySQLバージョン検出攻撃のサンプル 複文 複文をサポートする言語とデータベースの一覧 MySQLとPHPについて 複文によるSQLインジェクション攻撃のサンプル If命令文 MySQLのIf命令文 SQL ServerのIf命令文 If命令文を利用したSQLインジェクション攻撃のサンプル 数値の利用 文字列操作 文字列連結
こんにちは、サイバーエージェントのメディア広告部門、 通称MDHで開発局の局長をやっている小越と申します。 我々の部署は「メディアの為の広告テクノロジー」というミッションで 日々配信サーバーやDMPの開発を通じてメディアの広告収益を 上げる事を仕事にしています。 今回は、我々の部署で導入して、とても捗った話を紹介したいと思います。 ■何をやったのか?(やっているのか?) 簡単に言うと、(1)ディレクターがSQLを覚えて、(2)データ分析に 必要なデータ抽出はディレクターがやるというルールを導入し、 実際に運用しています。 導入前の課題、導入後の効果、 そしてそれから更に何が起こったかを順番に説明していきます。 ■導入前の課題 皆さんの開発組織では、PDCAサイクルはどのように回ってますか? PDCAとは我々の部署では以下のような行為と定義付ける事ができます。 P:プラン データ分析や戦略策
Download In this section you will be able to download the installation file, the documentation and the source code of all versions of SQL Power Injector. Current version
Configuring sql.DB for Better Performance という記事を知りました。 コネクションプールの大きさを制御する3つの設定を丁寧に解説されたとても良い記事です。 しかし、この記事で推奨されている設定については同意することができません。私が推奨する設定とその理由を解説していきたいと思います。 Limit ConnMaxLifetime instead of MaxIdleConns Allowing just 1 idle connection to be retained and reused makes a massive difference to this particular benchmark — it cuts the average runtime by about 8 times and reduces memory usage by ab
本記事は Towards Complex Text-to-SQL in Cross-Domain Database with Intermediate Representation(論文, リポジトリ)のサーベイ記事です。 日鉄ソリューションズ(NSSOL)様での研究開発インターンの一環として執筆しました。 今回紹介するのは、ざっくり言えば、自然言語で記述された質問からSQLクエリを生成するタスク(Text-to-SQL)において、文脈自由な中間表現を導入して性能を上げた研究で、提案モデルはIRNetと呼ばれています。 この研究ではSpider (論文, サイト) というデータセットを用いています。Spiderは従来のText-to-SQLデータセットよりも複雑な事例を多く含んでいます。 Spiderの公式サイトで挙げられている難易度が中くらい(Meidum)の例がこちらです: 複数テーブ
DMM.comは、動画配信やオンラインゲーム、オンライン英会話から株式や外国為替の取引まで、さまざまなサービスを20以上のグループ会社で提供しています。 同社のデータ基盤のデータベースにはMySQLが採用され、運用されてきました。 そのデータベースをMySQL 8.0へ移行するにあたり、移行先の候補とされたのがOracle Cloud上のマネージドサービスとして提供されているMySQLの新サービス「MySQL Database Service with HeatWave」(以下、HeatWave)です。 DMM.comは同社の実際のデータとSQLを使ってHeatWaveを評価。結果として最大で3000倍もの性能向上が得られたとする発表を、2021年5月に行われたウェビナー「DMM.comにおけるMySQL活用術とHeatWave検証結果解説」で行いました。 またオラクルはHeatWaveの
適用対象:SQL Server - Windows のみ ファイアウォール システムは、コンピューター リソースへの不正アクセスを防ぐのに役立ちます。 ファイアウォールがオンになっているが、正しく構成されていない場合、 SQL Server への接続の試行がブロックされる可能性があります。 ファイアウォールを経由して SQL Server のインスタンスにアクセスするには、 SQL Server」などのファイアウォールのマニュアルを参照してください。 ファイアウォールは Microsoft Windows のコンポーネントです。 別のベンダー製のファイアウォール プログラムをインストールすることもできます。 この記事では、Windows ファイアウォールを構成する方法について説明しますが、基本的な原則は他のファイアウォール プログラムにも適用されます。 Windows ファイアウォールの管
概要 PostgreSQL上で実行中のSQLを停止する方法について説明する。 Javaサーバ上で時間のかかるSQLを実行してしまい、Javaサーバを停止せずにそのスレッドだけを停止したい場合などにおいて、次の手順で実行された SQL を停止できる。 手順 プロセスID(pid)の確認 まず、問題のSQLが実行されるプロセスのIDを調べる。 コマンドラインなどで、次のSQLを実行。 SELECT procpid, start, now() - start AS lap, current_query FROM (SELECT backendid, pg_stat_get_backend_pid(S.backendid) AS procpid, pg_stat_get_backend_activity_start(S.backendid) AS start, pg_stat_get_backen
Oracle社は好きじゃないんだが、OracleDBは好きです。前職では、なんちゃってDBAみたいな役割だったこともあり、Oracle Master Goldも取得した。 ですが、今の会社で昨年基幹システムのリプレースがあり、そのシステムがSQL Serverだったのですが、運用フェーズに入ってSQL Serverと戯れることが多くなりました。 で、改めてOracleの方が優れてるなぁ。という話。コスト的には断然安いからその点は置いとくとして、あくまで運用担当者目線。あと、今回導入したERPのソフトに起因するのもあるけれども、つらつらと書いてみる。 基本機能 読み取り一貫性とロック よく言われるやつなんですが、Oracleの読み取り一貫性がSQL Serverにはない。ということで、色々挙動が変わるのですが、最も影響がでたとこでいうと、SQL ServerのSELECTはデフォルトで、SE
本シリーズではビジネスデータ解析でデータベースから情報を取得して活用する必要がある方を対象に、ビジネスデータ解析でよく使われる実践的なSQL例など、分析向けの活用を解説します。本稿では、さまざまなデータベースに接続する必要があるデータ解析の際に役立つ、フリーのSQLクライアントツール「SQL Workbench/J」の活用方法を解説します。導入・データベース活用手順を解説しデータ解析の際に役立つ機能を紹介します。 対象読者 SQLの基本は理解しているがより実践的な分析に取り組みたい方 サンプルの動作確認環境 MacOS 10.13 PostgreSQL 9.6 SQL Workbench/Jの概要と導入 本稿で取り扱うツール「SQL Workbench/J」とは何かを簡単にご紹介し、本ツールの導入方法についてご紹介します。 SQL Workbench/Jとは SQL Workbench/J
In general, what do you need in order to communicate? A common language (for the two ends to understand) A way to address who you want to communicate with A Connection (so the content of the communication can reach the recipients) What is TCP/IP? A set of protocols that define how two or more devices can communicate with each other. To learn more about TCP/IP, read here What is Ethernet? Ethernet
アプリケーションを作る上でデータベースを避けて通ることはできません。その中で最もポピュラーでパワフル(かつ普及している)のはSQLでしょう。 golangでも快適にSQLを操作したい。 このエントリでやること golangでSQLを操作する方法を、「基本(databse/sql)」から、SQLクエリを自動生成する「クエリジェネレータ」、最後に「ORM」という順序で解説します。 ライブラリの特徴などをいくつか抑えていくだけであって、網羅的ではない。雰囲気だけ。 操作方法 基本(database/sql) 標準ライブラリだけを使って頑張る。基本的にSQLを手書きして、変数とのマッピングも手で当てることになる。 sql.(*DB).Exec()を使うと、SQLクエリをそのまま叩ける。プリペアドステートメントはクエリのあとにガシガシ置いていくカンジ。 db, err := sql.Open("sq
オレオレ言語全盛期の炎暑の候、いかがお過ごしでしょうか。 オレオレSQLの作り方〜PostgreSQL編〜に続き、オレオレSQLの作り方〜MySQL編〜という事で MySQLに、自作のSQL関数(UDF)を組み込むやり方を簡単に紹介します。 MySQLは名の通り、私のSQLなのでオレオレSQLには持ってこいですね。 簡単に言えば select oreore(); select oreore(column1, column2) from table1; 自分で定義したC言語のoreore関数をDBに組み込んで使おうという事です。 最終目標は、SQLの結果でJSONを返そうと思います。 select json(a, b) from c;の結果で { "aaa" : 1, "bbb" : "abc" } 固定値を返す関数 早速、固定で999を返す関数を作ってみます。 ※バージョンはMySQL5.
グーグル、MySQL互換の「Google Cloud SQL」性能強化。最大でメモリ16GBへ拡張。Google Apps Scriptからも利用可能に グーグルはGoogle App Engineで提供しているMySQL互換のデータベースサービス「Google Cloud SQL」の性能強化を明らかにしました。Google Developpers Blogにポストされたエントリ「Get started at no cost with a faster, larger Cloud SQL database」で次のように説明しています。 ストレージ容量が従来の10GBから最大100GBへ インスタンスのメモリ容量が従来の4GBから最大16GBとなり、読み込み速度が向上 非同期レプリケーションを選択可能にしたことで、書き込み速度が向上 欧州データセンターで提供開始 Google AppsのGo
この記事の概要 SaaSのデータをBigQueryに統合することで業務改善を促進できる。 しかし、SaaSのデータの中身を見ると、BigQueryの関数では対応しにくい形式になっていることがある。 そこで、本稿では「こういうデータ形式だったらこういうSQLを書く」というサンプル集を掲載する。 目次 この記事の概要 目次 宣伝 実現したいこと SaaSデータの処理方法 SQLサンプル1: 純粋な配列だけのケース SQLサンプル2: 配列内にハッシュマップがあるケース SQLサンプル3: 配列宣言ナシでカンマ区切りのハッシュマップが突如始まるケース SQLサンプル4: 配列とハッシュが入り乱れるケース SQLサンプル5: JSONの中に親子構造があるケース SQLサンプル6: Objectを定義したくなるケース 最強のJSONパースの関数は作れるか jsonデータの処理をどこで行うか 最後に
ChatpGPT(モデルはGPT-4を利用)にシンプルなSELECT文とテーブル・インデックス定義を与えてSQLチューニングの案出しをしてもらいました。 ちなみに、プロンプトやChain of Thought などの工夫は一切せず、シンプルに質問をぶつけています。 以下、注意事項。 実務利用と比べるとシンプルすぎるのでお遊びの範囲を超えていません。 どのチューニング案が適切かは多くの要素(例えば以下)が関わってくるので、一概に判断できず実際に測定を行い確認する必要があります。 データ量やその分布 ハードウェアやRDBMSの種類・バージョンなどの環境 性能要件(何秒以内のレスポンスが必要か、同時実行数はいくつかなど) ChatGPTへの質問とその回答 1. 単純なインデックスが不足しているケース 質問 以下のSQL文の性能を改善するにはどうしたらよいでしょうか。 select custome
Googleは同社のクラウド上で提要しているデータベースサービス「Google Cloud SQL」に対して、オンプレミスなどクラウド以外からもMySQLの標準プロトコルで接続できる機能「MySQL Wire Protocol」を公開しました。 Cloud Platform Blog: Google Cloud SQL is now accessible from just about any application, anywhere MySQL Wire Protocol is the standard connection protocol for MySQL databases. It lets you access your replicated, managed, Cloud SQL database from just about any application, runni
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く