データベース

オラクルマスターシルバーはブロンズを持っていないと、資格がとれない

お仕事はPC関連です。でも、小さな会社なので自分の職業をどう言っていいか迷います。技術職というなら確かにそれですが、もっと細かい分類は困ります。前まではシステムエンジニア(SE)といえばいいだろうと思っていたけど、なんか最近はそれも違うのかなぁ…

DebianでのMySQLのエラーログの場所 mysql "show variables"

現在運用しているサービスの表示が遅いということで、MySQLのメモリの割り当てのチューニングをしてみようと思った。my.cnfでいろいろいじってみたが、どうにも設定が割り当てられるメモリの限界を越えているようで、サービスで何も表示されなくなってしまう…

自己結合で失敗

仕事関係で自己結合を使ったのだけど、えらいことにしてしまった。時間かかりまくっても結果がでなかった。 クエリをよく見て考えると、同じレコード同士を結合しているので、最低でも元々のテーブルのレコード数はある。せめて、同じプライマリキーは結合し…

覚えたつもりでもしばらく書かないと忘れる GROUP BY句

仕事で久しぶりにSQLを書いた。1つの表で、同じグループのものがいくつあるか調べるものだった。すぐに、GROUP BY句を使うことは思い浮かんだし、Aというグループのものがいくつあって、Bというグループがいくつあってとグループの数だけSELECT文を発行する…

MySQLの設定ファイルの名前

MySQLの設定ファイルをいじったり確認したりすることが増えてきた。そして、サイトで検索することも多くなってきた。ここで設定ファイル名が、my.cnfとmy.iniと2種類ある。 my.cnfはUNIX系でmy.iniはWindowsの場合のようだ。

mysql-error#2002の対策とエラーログの場所

昨日でていたphpmyadminでの。#2002 - Can't connect to local MySQL server through socket '/tmp/mysql.sock'というエラーはやっぱりmysqlの再起動で直った。でも、なんでmysqlが落ちたのかよくわからない。 エラーログを見ようと思ったのだが、エラーログ…

バックアップ、ファイルの直接コピー

innoDBのファイル直接コピーにとりかかろうとした。事務所のサーバは、クローン動かしているので、まずはそれを止めて、innoDBテーブルに書き込みを止める。その後、show innodb statusでログファイルからテーブルに全部書き込まれたかを確認してからmysqlを…

innodb_file_per_tableはパフォーマンス落ちる?

mysqlのinnoDBのオプションのinnodb_file_per_tableは、システムのパフォーマンスが落ちるという記事を発見。本来はそんなに落ちないらしいし、この人がどの程度のシステムなのか分からない。多分検索と挿入パフォーマンスが落ちるのかも。でも、メンテナン…

 innoDBのmysqldumpについて少しだけ

完璧なバックアップはmysqldumpということから、まずは念のためにmysqldumpをしてから、ディレクトリをコピーする方法を試そうと思っていた。しかし、2日過ぎて、何の念のためかわからなくなった。ディレクトリの直接コピーで元のデータが壊れることなんか…

 リストア・リカバリ

バックアップを取ったとして、それを活用しないといけない。とりあえず単語説明。 リストアは、バックアップをとった時点の状態に戻すこと。リカバリは、障害直前の時点まで戻すこと。

debian(Linux)でのデータファイル群の場所

結論を先にいうと、/var/lib/mysqlということです。 自分のPC内ではすぐに見つかったテーブルごとのファイルや、ibdataなどだったのだけど、仕事用のサーバでは見つからない。僕のPCは、windowsだから分かりやすい位置にあったのだろうか。普通にmysqlディレ…

innoDBの最初の挙動

バックアップに関わる実験の1つ。 現在僕のPCには、MySQL6が入っている。恥ずかしながらほとんど使われていないので、innoDBのibdataファイルの初期化とib_logfile0とib_logfile1がどうなるかを知ろうと思った。 ibdataにはinnoDBテーブルのデータとインデ…

 確実なバックアップとしてのmysqldump

ファイルの直接コピーでバックアップをとろうとしてきたのだけど、このファイルはバイナリデータで壊れてしまうことがあるらしい。このために、mysqldumpでSQL文を吐き出しておいたほうがいいらしい。バイナリデータが壊れても、SQL文のように人間がみて破損…

 バックアップ裏技 多分やっちゃダメ 不具合もあるかも

innoDBでのバックアップについて調べているのだけど、MyISAMの簡単さがすごくうらやましい。マスター/スレーブのときにテーブルのエンジンを変えてやらないといけない場合もあるという記事を見つけた。そこから、前にもちょっと考えていた1つの考えを実行う…

 innoDBにバックアップの基本事項

innoDBでは、テーブルの構造はdataディレクトリ内のそれぞれのデータベースのディレクトリ内に、テーブル名.frmというファイルで入っている。データやインデックスなどは、全データベースの全innoDBテーブルのデータがdataディレクトリのibdataというファイ…

  検索したデータをランダムに取り出す方法

いつも同じ順番で表示されるとつまらなかったり、必要上順番がランダムであってほしいことがある。そんな時に使うのが、ORDER BY RAND()です。 SELECT * FROM テーブル名 ORDER BY RAND() これであるテーブルのレコードが全部ランダムで表示される。でも、普…

 オンラインバックアップとオフラインバックアップ

そもそもバックアップするときの状態が2種類ある。オンライン(ホット)とオフライン(コールド)の状態でやり方が大きく変わってくる。 オンラインというのは、サーバが起動している状態のままバックアップをとること。サービスの運用停止ができない場合に…

 MySQLのバックアップ コマンド

MySQLのバックアップ方法は、大きく分けて専用コマンドを使う方法とファイルを直接コピーをする方法がある。 とりあえずコマンドについてだけメモ。 コマンドは3種類あり手軽さの順にいうと、mysqlsnapshot>mysqlhotcopy>mysqldumpになっている。しかし、my…

 debianにMySQLをインストールして設定する

debianにMySQLをインストールしてみたので、一応経過を残しておく。debianのインストールはCDから行い、他の部分も多くは同僚にやってもらった。MySQLのインストール部分もやってもらったが、その前に一応手順を自分で調べて、やってもらった部分も見ていた…

 GRANT文の実用的な使い方 1番良い使い方

GRANT文というのは、権限を与えるという非常に強力な命令です。もしも、間違えて権限を与えてしまってDROP DATABASE データベース名;など使われたなんてことが起こると、目も当てられません。だから、GRANT文は慎重に使い、ユーザ権限は必要なものしか与えな…

 MySQLでユーザ権限を与えるGRANT

GRANT文はまだ1度も使ったことがありません。phpMyAdminでも、サポートしているかどうも謎でした。さらにいうと、他の人も使うということを想定していなかったので、全部rootでログインするという感じでした。 今回より、SQLのプログラムコードの部分だけ色…

 MySQLでデータベースとテーブルを作る

SQLのDDL(Data Definition Language:データ定義)とDML(Data Manipuration Language:データ操作)は、前に勉強したことがあるのだけど、それはphpMyAdmin上からだったので、コマンドプロンプトから実行してみる。今回はDDLの中のCREATE、つまり作成の部分…

 データベースの初期の状態で内容をいろいろ見てみる

いろいろやる前に、データベースの状態の確認。 まずはログインしてから、 mysql>status これをすると、バージョンやデフォルトの文字コード、MySQLサービスを起動してからの時間、現在どのユーザーなどの情報が分かる。ポートはMySQLは3306。 続いて、元々…

 コマンドラインからMySQLのサービスを開始、または停止

僕のPCでは、OS起動時にMySQLが自動で起動するようになっている。そして、手動でMySQLの起動、停止をする時は、windowsのサービスの管理から起動などをしていた。コマンドラインからもサービスの開始などをできるようなので、ついでに勉強しておく。 練習の…

 MySQLにコマンドラインからログイン

今更ながらデータベースの本読むより、もっと実際にデータベースをいじらないといけないことに気づいた。というわけで、いろいろやってみる。phpMyAdminからではなく、コマンドプロンプトからいろいろやっていこうと思う。 MySQLはバージョン6をすでにイン…

 SQLの先行き

オブジェクト指向データベースでは、SQLは使えない。なぜかというとオブジェクト指向データベースには、計算完全性が必要だから。完全計算必要性とは、一般のプログラミング言語と同様の表現能力が必要らしい。 時代が移行していけば、SQLが使えなくなるのも…

 分散データベースにおける8つの透過性

ロケーション透過…利用者が表やビューなどの位置や移動先を意識しないで扱えること。 フラグメンテーション透過…1つの表を行や列で分割し各サイトに保持していても、利用者がこれを意識しないで1つの表として扱えること。 レプリケーション透過…検索時や更…

 Firebird トランザクション用語

トランザクション処理で、コミットもロールバックもしていない状態を、コミット待ち状態として、セキュア状態という。ロールバックはアボートという。 オープンソースデータベースのシェアは、日本ではMySQL VS PostgreSQL という構図だけど、世界的にはMySQ…

 インデックスの種類と用途 その他インデックスに関すること

高速な検索処理のためには、インデックスが必要。用途に応じて適切なデータ項目を設定する。 CREATE INDEX インデックス名 on テーブル名(カラム名) 上記のような形でインデックスをつけることができる。しかし、インデックスには何種類かあるのだけど、上記…

 設計要件 更新と検索のトレードオフ 

データベース設計要件として、物理要件と運用要件がある。 物理要件とは、データベースファイルの大きさ、更新ログファイルの大きさ、ファイルの成長性など。データの初期量や将来性を考えないといけない。 運用要件は、スループット、レスポンスタイム、バ…