要約技術的な話だけ教えて、という方のために先に結論だけ書いておきますと、PostgreSQLはクエリを実行した時点で全レコードの情報を一気に読んできてヒープを埋めてしまう場合がある、ということ話です。 たとえば、ResultSet#nextメソッドを使いながら処理を回すようなコードを書いて、少ないヒープでも処理できるようにするのは常套手段だと思いますが、そういうコードを書いていても一気にヒープを消費してしまうことがあるのです。詳しくはこのドキュメントを見てください。 https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor ことの発端 ちょっと仕事でJava + jOOQ + PostgreSQLで、DBのデータを集計するようなバッチ処理を書いてまして、もちろん俺様の書いたコードにバグなんてある

A long, long time ago (2013), I answered on this SO question about using 2database connections. For some reason, over a decade later, this page still ranks. Let's do an update! Here is how to run more than onedatabase connection. This article is about usingdatabases with different data, notnecessary for load balancing (or connection pooling) betweendatabases. HoweverLaravel does have the abi

(注:2017/10/16、いただいたフィードバックを元に翻訳を修正いたしました。) (注:2017/10/11、いただいたフィードバックを元に翻訳を修正いたしました。) データベースのドキュメントで分離レベルを目にして、軽く不安を感じつつ、あまり考えないようにしたことはないでしょうか。トランザクションの日常の使用例できちんと分離について言及しているものはほとんどありません。多くはデータベースの初期設定の分離レベルを利用しており、後は運頼みです。しかし、本来、理解しておくべき基本的なトピックであり、いくらか時間を投入してこのガイドの内容を学習すれば、もっと快適に作業できるようになるでしょう。 私はこの記事の情報を学術論文、PostgreSQLドキュメンテーションから集めました。分離レベルの 何たる かだけでなく、適用の正確さを保持しつつ最大速度で使うにはいつ使うべきか、という疑問に答えるべ

自己紹介 中村Domaの開発者 開発歴 約16年 X: nakamura_toGitHub: nakamura-toDomaとは?JavaのDBアクセスフレームワーク 注釈処理(JSR 269)でコード生成 & コンパイル時検証 実行可能なSQLテンプレートDomaの歴史 2009/05: 開発開始 2009/02: v1.0.0リリース (Java 6対応) 2014/07: v2.0.0リリース (Java 8対応) 2024/09: v3.0.0リリース(Java 17対応) 2025/03: v3.6.0リリース(最新版) 1. 動かさないとわからないを減らす コンパイル時にできるだけチェックJavaコードに対して 例:アノテーションの存在チェックSQLファイルに対して 例:パラメータの存在チェック

Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに やあ (´・ω・`) ようこそ、バーボンハウスへ。 このmysqlはサービスだから、まずsystemctl startmysqld して落ち着いて欲しい。 うん、「また」なんだ。済まない。 仏の顔もって言うしね、謝って許してもらおうとも思っていない。 でも、このタイトルを見たとき、君は、きっと言葉では言い表せない 「ときめき」みたいなものを感じてくれたと思う。 殺伐とした世の中で、そういう気持ちを忘れないで欲しい そう思って、この記事をかいたんだ じゃあ、注文を聞こうか。 というわけでmysqlをdisります。disるだけな

はじめに UPSERTが採用されたという事で使用方法を調べてみました。 UPSERTとは 「このデータをINSERTしたいけど、同じデータが存在していて制約で弾かれるかもしれない。そうなったらUPDATEしたいなあ。」 と言った場合に使える機能です。 ただし、UPSERT句が作られた訳ではなく「一般的にUPSERTと言われている機能を搭載したよ」と言う事みたいですね。 この後は実際に制約を設定したテーブルにUPSERTを試してみてどうなるかを見ていきます。 検証環境MacOSX 10.9.5 PostgreSQL 9.5.1 構文 INSERT INTO テーブル名 VALUES ('値1', '値2', ...) ON CONFLICT ON CONSTRAINT 制約名 DO UPDATE SET カラム1='値', カラム2='値', ...; INSERTとUPDATEでON

上記の中のRDBMS全てに加えて、クラウド時代に合わせて再設計したAurora、MySQLのフォークであるMariaDBが使用できます。MySQL:最もシェアがあるOSSのRDBMS。Oracle:高いシェアがある商用RDBMS。SQL Server:高いシェアがある商用RDBMS。Windowsとの親和性が高い。 PostgreSQL:機能が豊富なOSSのRDBMS。Aurora:AWSがクラウド時代に再設計したRDBMS。MySQL 5.6互換でMySQLの5倍高速と言われています。 MariaDB:MySQLからフォークしたRDBMS。MySQL互換。 性能向上が簡単に実施可能Amazon RDSでは、様々なスペックのインスタンスを使用できます。最大40個のvCPUのインスタンスや244GBのメモリのインスタンスがあります。性能が不足してきたら、インスタンスのサイズを変更す

森永です。 のんのんびよりが心の癒やしです。 さて、待ちに待ったあいつがやって来ました。そう、AmazonAuroraです。 いつものごとく東京リージョンには来ていませんが、ひとまず触ってみました。AmazonAuroraとはAmazonが設計開発を行っているRDBMSです。MySQL互換で、商用に耐えうる高い可用性を持っているとのことです。 特徴として ストレージが自動で10GB〜64TBまでスケールする AZまたぎでコピーし、更に各AZで2つのコピーを作成 自動修復もできちゃうSSDベースのディスクアレイに10GBずつ分散して書き込み 継続的にバックアップがとられていてピンポイントでのリストアが可能 ほとんどのMySQLを使用したアプリケーションはそのまま使える などがあげられます。RDBMSの弱点をなくそう、減らそうという意気込みが感じられます。 起動してみた Auro

MySQL 5.7.4で導入されたdefault_password_lifetimeがじわじわくる(MySQL 5.7.11でFIX!!) 【2016/01/13 10:12】MySQL 5.7.11でdefault_password_lifetimeのデフォルトは0に変更になりました! それ以降のバージョンであればこの記事の内容は気にする必要はありません。 日々の覚書:MySQL 5.7.11でdefault_password_lifetimeのデフォルトが0になるらしい! TL;DR default_password_lifetime= 0 を秘伝のmy.cnfに入れておくつもり。MySQL ::MySQL 5.7 Reference Manual :: 5.1.4 Server System Variables パラメーターの意味は読んで字のごとく、「最後にパスワードが更新さ
外部キー便利!!!MackerelではPostgreSQLで外部キーあり そのレコードがあることが保証される 各テーブルのidにアプリケーションレベル(Mackerelの場合Scala)で型付けをするとなお便利 MemberID型、MonitorID型 → idで誤ったテーブルを引くとかがない本日のスキーマCREATE TABLE `member` ( `id` INTEGER unsigned NOT NULL auto_increment, `earned_item_count` INTEGER unsigned NOT NULL DEFAULT 0, `name` VARCHAR(191) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4;CREATE TABLE `item`
来る2月27日、データベースの新書籍を発売させて頂くことになった。タイトルは「理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL」となっている。単に「データベース」と書いてあるが、RDBがメインのテーマの書籍である。 多くの人が未だにRDBを使いこなせていないのではないか。RDBの使い方をマスターするには何が必要なのか。それがここ数年私が追ってきたテーマであり、この書籍を出すことになった動機である。 あまりにも酷いDB設計、あまりにもスパゲティなクエリ、あまりにも希薄なデータモデルへの理解。そういった問題はどこから生み出されるのか。そのひとつの結論としてたどり着いたのが、「そもそもRDBの使い方があまり理解されていないのではないか」ということだった。名著、SQLアンチパターンでは「やってはいけないケース」について学ぶことができるが、その反対のテーマ、つまり本来どの

ハンドノート T字形ERモデル セミナー資料 (Author; S.Toriyabe SYSTEMS DESIGN Co.,Ltd. Japan)
MySQL 5.6 の検証中にMySQL 5.5 とは違うタイプのレプリケーション遅延を見つけたので紹介します。MySQL のレプリケーションのおさらいMySQL のレプリケーションは次のような仕組みで動作しています。 マスターの更新トランザクションが binlog を書く スレーブの I/O スレッドがマスターに接続し、 binlog を取得し、 relaylog を書く. マスター側はスレーブからの接続を受け付けると(dump スレッド)、指定された場所から最新までの binlog を転送する binlog が追記されるのを待ってさらにスレーブに送る スレーブのSQLスレッドが relaylog を再生するMySQL 5.5 でよくあったレプリケーション遅延 マスターは並列してトランザクションを処理して、最終的にコミットした順で反映されれば問題ないようになっています。 一方、ス

この記事は、Arin Sarkissian氏のブログ記事「http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model」を氏の許可を得て翻訳したものです。(原文公開日:2009年9月1日) ここ1、2ヶ月というもの、DiggのエンジニアリングチームはCassandraについて調べ、遊び、最終的にはプロダクションにデプロイするためにかなりの時間を費やしてきました。これは実に楽しいプロジェクトでしたが、楽しくなる前にCassandraのデータモデルについて理解するために相当の時間を費やしたのです。「'super column'って何だよ」というフレーズが何度も口にされました。 もしあなたのバックグラウンドがRDBMSならば(ほとんどみんながそうでしょうが)、Cassandraのデータモデルについて学ぶ際に、いくつかのネーミング規約で
うらがみがJavaまわりのORMを知りたい会 - connpassJava の O/R マッパーまわりの話を知りたかったので、6/14 に行われた勉強会 「うらがみがJava まわりのORM を知りたい会」 に参加してきました。 会場は和室でした。Java まわりの O/R マッパー、あんまり詳しくないのでいろいろ知れて良かったです。 メモを残しておきます。 発表内容Java のORM、Doma の話 +α (@backpaper0 さん) 発表資料:JavaのORM、Domaの話 +α —JavaのORM、Domaの話 1.0 documentation いろんな O/R マッパーについての簡単な紹介と、Doma の紹介。 紹介された O/R マッパーのうち、使うとしたら JPA か Iciql かDoma かなーという気持ちになった。 (個人の感想です。) ちなみに紹
大規模なWebアプリケーションのバックエンドでは、データを分割して複数のデータベースで運用することによりスケーラブルな運用を実現する「シャーディング」と呼ばれる技術がよく使わています。 米オラクルはMySQLでこのシャーディングを実現するソフトウェア「MySQL Fabric」を含む「MySQL Utilities」をリリースしました。PHP、Java、Pythonに対応MySQL Fabricは基本的にデータのレプリケーションを活用してシャーディングをするフレームワーク。データの範囲あるいはハッシュ値を分割キーとして用いたシャーディングを実現します。 アプリケーションからMySQL Fabricを利用するには、専用のコネクタを用いて接続する必要があります。コネクタは現在、Python、Java、PHPに対応しており、今後ほかの言語にも対応予定。MySQL Fabricには、全体を管

空コミットとは、あるトランザクションでDMLの実行は無いがコミットする、ことを指す。一般的に通用する用語かどうかは謎だが、ひとまずこのエントリ内ではそういうもんとして話を進める。Oracleでコレがどういう時に現れるかというと、たとえばFOR UPDATE句を多用するシステムが考えられる。トランザクションの終わりで必ずコミットさせるようにして、ロックの解放漏れを防ぐのが目的である。 何もコミットするものがなければREDOログは発生しないハズなので、空コミットの負荷はほとんど無いと考えられる。が、実際どんなもんなのかをやってみるのが、このエントリの趣旨である。 環境DB CentOS-6.4-x86_64OracleDatabase Express Edition 11g Release 2 ツールOracleSQL Developer 4.0(4.0.1.14.48) RLog
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く