タグ

mysqlとDBに関するhatekun33のブックマーク (22)

  • 1日に100万レコード増える場合のテーブル設計

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。 PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

    1日に100万レコード増える場合のテーブル設計
  • ルーク!MySQLではkamipo TRADITIONALを使え! | おそらくはそれさえも平凡な日々

    よくMySQLはゆるふわだから 値が勝手に切り詰められる エラーが起きずに変な値/日付が入る 不正なスキーマが入ってしまう など言われることがあります。ただそれは、そもそもの設定が悪いのです。(確かに昔デフォルトがゆるふわなのはいけなかったんですが) ということで、データベースには不正な値が入らないように設定はとにかく厳しくしておくのがオススメです。 じゃあどうするか。 MySQLSQL Modeによって、その辺りの制約をコントロールすることができます。以前、MySQLsql-modeで一番厳しいやつはTRADITIONAL、というのを書いたのですが、実はそれだけでは不十分で、TRADITIONAL,NO_AUTO_VALUE_ON_ZERO,ONLY_FULL_GROUP_BYとするのがより安心なようです。 これはkamipoさんに教えてもらいました。 @songmu TRADITI

    ルーク!MySQLではkamipo TRADITIONALを使え! | おそらくはそれさえも平凡な日々
  • Webシステムにおけるデータベース接続アーキテクチャ概論 - ゆううきブログ

    先月投稿した2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャを学ぶ道のりと代表的な実装モデルの概要を紹介しました。 今回は、前回同様、主に新卒Webエンジニア向けに、Webアプリケーションサーバとデータベースサーバ間の接続管理モデルと運用事情について紹介します。 データベース接続の永続化やコネクションプーリングとは何なのか、なぜ必要なのかといったことが主な話題です。 背景 データベース接続の永続化とはなにか データベース接続のオーバヘッド データベース接続の永続化手法 コネクションプーリングとはなにか コネクションプーリング: ドライバ型 コネクションプーリング: プロキシ型 コネクションプーリング全体について PostgreSQLMySQL 参考資料 まとめ 背景 2015年Webサーバアーキテクチャ序論では、Webサーバアーキテクチャの話とWebアプリケーショ

    Webシステムにおけるデータベース接続アーキテクチャ概論 - ゆううきブログ
  • MySQLテーブル設計入門

    行ロックと「LOG: process 12345 still waiting for ShareLock on transaction 710 afte...Masahiko Sawada

    MySQLテーブル設計入門
  • 現場指向のレプリケーション詳説

    この文書は、技術評論社刊『WEB+DB PRESS Vol.22』に執筆した記事を技術評論社の 許可を得てWWWで公開しているものです。 このWWW版は校正前の原稿を元にしている点、WWW公開後に必要があれば修正する点で、雑誌版の文章とは異なる部分があります。また、図表も雑誌版とは異なります。 予めご了承ください。 また、この文章が対象しているのはMySQL 4.0系なので、最新のリリース版と比べると説明不足な点などが多々あると思います。 レプリケーションの基をおさえるには、この文書はまだ有益だと思いますが、設定レベルの説明は最新のドキュメントを参照するようにしてください。

  • MySQL でのテーブルメンテナンスは「mysqlcheck」 - 稚拙な備忘録ですが

    今日MySQLのデータベースを利用しているアプリケーションの動きが 少し遅いような気がして、「そういえばPostgreSQLのvacuumと同様のものはないか」と ふと思って調べました。 MySQLでは mysqlcheck -u ユーザー名 -p(パスワード指定の意)  {optionを指定} で行うとのこと。 ひとまず全データベースに対して実行 -A 全データベース -o optimize を実行 mysqlcheck -A -o -u root -p これでOK。 処理ログを見ると「Table does not support optimize, doing recreate + analyze instead」 というのが散見する。 これはINNODBはテーブルを作り直しているとの意味。そうなのか。 以下主なオプション指定 -A: 全データベース指定 -a: テーブルを分析 -c:

    MySQL でのテーブルメンテナンスは「mysqlcheck」 - 稚拙な備忘録ですが
  • ** YAPC::Asia Tokyo 2011 RejectConf 本当は難しいフレンド・タイムライン処理

    TopicsPlaceHolder SectionTitlePlaceHolder TIME rest time current/total

  • mysql:12071 階層化されたデータをMySQLで扱う

    From: zen kishimoto <zen kishimoto <zen@xxxxxxxxxx>> Date: Sat, 03 Sep 2005 09:24:15 -0700 Subject: [mysql 12071] 階層化されたデータをMySQLで扱う (Managing Hierarchical Data in MySQL) http://dev.mysql.com/tech-resources/articles/hierarchical-data.html (図はこのサイトを参照のこと) Mike Hillyer著 初めに 多くのユーザーは一回くらいはSQLデータベース内で、階層化したデータを 扱ったことがあると思います。そのときはリレーショナル データベースは階層化したデータ用に開発されなかったと考えたと思います。 リレーショナルデータベースのテーブルは階層化されておらず

  • MySQLをインストールしたら、必ず確認すべき10の設定 | Yakst

    MySQL Performance Blogの翻訳。インストール後に必ず設定を確認しなければならない設定パラメータ10つを挙げ、その意味を解説する。MySQLの設定変更時の、一般的な注意点も合わせて。 January 28, 2014 By Stephane Combaudon 我々がパフォーマンス監査の仕事をする時には、MySQLの設定のレビューと改善提案を求められる。大抵の場合、たくさんのオプションがある中でほんのいくつかの設定しか変更するように提案しないことに、多くの顧客は驚く。この記事のゴールは、もっとも重要な設定をいくつか挙げてみることにある。 既にこういった提案は過去にもしているが数年前のもので、それ以来MySQLの世界ではたくさんの変化があったのだ。 話の前に 熟練した人でも、重大なトラブルを引き起こすミスをしでかすことがある。従って、ここに挙げたものを盲目的に適用する前に、

    MySQLをインストールしたら、必ず確認すべき10の設定 | Yakst
  • MySQL Workbenchを使ってデータモデリングを学んでみよう

    「データモデリング」とは? さて、いきなりWorkbenchホームページのModelsからモデリング!を開始する前に、すこしデータモデリングについてのお話をさせてください。 みなさんが今利用しているMySQLを含むRDBMSは1970年代にIBMのE.F.コッド博士によってなされた提案を源流として、今日まで発展を続けてきました。その発展過程において、現実の世界におけるデータ要件と、データベースの設計とを結びつける方法論が必要になりました。 1976年にP.チェン博士によって提案されたER図はその役目を担うことが可能であり、各種改良を重ねられて今日まで利用されています。現実世界のデータをどのように扱うかをまとめ、ER図のような図版で視覚化したものを「データモデル」といい、そのデータモデルを組み上げていくことを「データモデリング」といいます。 データモデリングの過程、および結果として作成された

    MySQL Workbenchを使ってデータモデリングを学んでみよう
  • MyISAMからInnoDBへ切り替えるときの注意点

    MySQLを使い始めて間もない人がよく陥る罠の中に、気づくと使ってるストレージエンジンがMyISAMだった!ということがある。デフォルトのストレージエンジンはMyISAMなので、MySQLに詳しくない人たちが比較的陥りやすい罠なのだ。そもそもストレージエンジンという概念自体がMySQL独自のものなので仕方のない話である。MyISAMは素晴らしいストレージエンジン(たとえばこのYahoo!の中の人による投稿で言われているように)であるが、長所もあれば短所もある。例えば、 トランザクション対応ではない。 クラッシュセーフではない。 更新と参照が入り乱れた場合の同時実行性能がよくない。 テーブルが大きく(数億行とか)なるとINSERTの性能が劣化する。 などなど。特に前者の2つが問題で、アトミックな操作が必要なところでロジックを実装出来なかったり、サーバがクラッシュした時にデータがお亡くなりにな

    MyISAMからInnoDBへ切り替えるときの注意点
  • NoSQLの成功は1:10問題にかかっている:Kenn's Clairvoyance

    ここ2-3年ほど、いわゆる非SQL系データベースがホットな話題になってきています。このムーブメントを総称して「NoSQL (Not-only SQL)」と呼ばれることが多いようです。まるでSQLを否定しているかのような誤解を招きやすい用語ですが、かといってキー・バリュー型データストアや列指向DBを総称できる他の呼び方もないので、このエントリではNoSQLという用語を使うことにします。 OracleMySQLなどのSQLデータベースが成熟していく一方で、SQLデータベースを特徴づける弱点である柔軟性のなさ、堅牢さと引き換えに犠牲になった更新性能の低さ、スケールアウトの難しさなどから、「何でもかんでもRDB」から「目的に応じた永続化」が模索される流れになってきました。 時を同じくして、キャッシュサーバの世界でも、MemcachedのもつシンプルなAPIの使いやすさが評価される一方、LRUによ

    NoSQLの成功は1:10問題にかかっている:Kenn's Clairvoyance
  • これを知っておかないと、MySQLサーバの再起動でDBデータの不整合が発生するかもしれません! - よかろうもん!

    Railsに限らず、MySQL(Innodb)を利用したサービスを開発/運用しているなら、これから解説する内容を知っておかないと、予期しないデータ不整合を発生させてしまうかもしれません。 データ不整合が発生してしまったら、来あるべき状態に戻すのはかなり難易度が高いため、開発/運用をしているエンジニアは、データ不整合を起こさないようにすべきです。 では、どのようなことをすると、データ不整合をいとも簡単に発生させることができるかを解説します。 まずは、何が原因でデータ不整合が発生するかの簡単なモデルを紹介します。 以下のようなUserオブジェクトをcreateししたとします。 User.create(:name => "interu, :age => "27") すると、Userテーブルにデータが追加されます。 ■ Userテーブル id name age 1 user_a 30 2 use

    これを知っておかないと、MySQLサーバの再起動でDBデータの不整合が発生するかもしれません! - よかろうもん!
  • 実録・4大データベースへの直接攻撃

    情報の入れ物、データベースは大丈夫ですか 皆さんこんにちは、川口です。そろそろGumblarの話に飽きてきたところでしょうか。今回は以下の4種類のデータベースで、管理用ポートをインターネットにオープンしているとどうなるかについて調べた結果を取り上げます。いずれも管理用ユーザーのパスワードは「脆弱なもの」に設定されています。 Oracle(1521/tcp) SQL Server(1433/tcp) MySQL(3306/tcp) PostgreSQL(5432/tcp) 右側に書いてある番号が管理用ポート番号です。データベースを管理する場合、これらのポートをインターネットに対してオープンにする必要はないはずです。しかし、これらのポートに対して外部から“直接”接続するインシデントが年に数回は発生しています。 このようなインシデントは、大学のネットワークに接続したサーバがほとんどですが、ホステ

    実録・4大データベースへの直接攻撃
  • PHP+MySQLでトランザクション

    ということで今回はPHP+MySQLでトランザクションです。 トランザクションとは金融のシステムに必要不可欠な処理です。 トランザクションって何?って方はここをご覧になって その重要性を知っていただきたい ではソースです。 <? if ( !extension_loaded( "mysql" ) ) { dl( "php_mysql.dll" ); } //接続用文字列 $Server = "サーバ名"; $DbName = "データベース名"; $User = "ユーザ名"; $Password = "パスワード"; //接続 $Connect = @mysql_connect( $Server, $User, $Password ); if( !$Connect ){ print "接続できませんでした"; exit(); } //DBの選択 mysql_select_db( $DbN

    PHP+MySQLでトランザクション
  • サービス終了のお知らせ

    平素より「PHPプロ!」をご愛顧いただき、誠にありがとうございます。 2006年より運営してまいりました「PHPプロ!」ですが、サービスの利用状況を鑑みまして、2018年9月25日(火曜日)をもちましてサービスを終了させていただくことになりました。 サービス終了に伴いまして、2018年8月28日(火曜日)を持ちまして、新規会員登録ならびにQ&A掲示板への新たな質問、回答の投稿を停止させていただきます。 なお、ご登録いただいた皆様の個人情報につきましては、サービス終了後、弊社が責任をもって消去いたします。 これまで多くの皆様にご利用をいただきまして、誠にありがとうございました。 サービス終了に伴い、皆様にはご不便をおかけいたしますこと、心よりお詫び申し上げます。 件に関するお問い合わせはこちらよりお願いいたします。

  • 2007/04/23-01、skip-character-set-client-handshake について - debian-etch に関するメモ(後、lennyへアップグレード)

    [カテゴリ:etch] [カテゴリ:all] [カテゴリ:mysql] ***************************** 2010/01/29 google で skip-character-set-client-handshake を検索すると、 いつの間にか、このページが1番目に表示されるようになりました。 正確性に欠けるかもしれないがもう少し書いておきます。 文字化けを解決するのに、 skip-character-set-client-handshake や SET NAMES を 使うのは、もはや正解ではありません。 このページの情報は、時系列に追記しているので、ページ上部の情報は正しくありません。最後まで読むことをお勧めします。 ***************************** 目次

  • MySQL のNULL ではまったことあれこれ - LukeSilvia’s diary

    MySQL に限らず、SQL のNULL の仕様には何回か「えっ」と驚くことがあったのでメモしておこうと思います。5.1 版の日語マニュアルがなかったものについては、4.1 のマニュアルを参照しました。 そもそもNULL は何を意味するか NULL は未定義または、不明を意味する。「電話番号を持たない」ということを表現する場合は、NULL ではなく、空の文字列を使う。 NULL 値というものを SQL 初心者はよく混乱します。SQL 初心者は、多くの場合、NULL が空文字 "" と同じであると考えてしまいます。これは違います。たとえば、以下のステートメントは完全に別のものです。 mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (""); どちらのス

    MySQL のNULL ではまったことあれこれ - LukeSilvia’s diary
  • MySQLクイック・リファレンス

    この文書は、osCommerceで使用しているデータベースMySQLの基的な使い方について解説しています。おもにデータベースの管理者よりも、ユーザに向けて書かれています。 はじめに ここでは、MySQLサーバは起動しているものとして説明します。 MySQLの文字について MySQLでは、データベース名やテーブル名の大文字と小文字を区別しています。それ以外は区別しません。 MySQLのフィールド名やテーブル名に使える文字は、英数字と_(アンダーバー)、$、サーバのキャラクタセットにある文字です。 知っておきたいコマンド mysqladmin(データベースの作成・削除や、MySQLサーバの情報を得る) mysqlshow(データベース、テーブルの情報を表示する) mysqlMySQLクライアントの起動) mysqldump(データベース、テーブルをダンプする) myisamchk(テーブル

  • MySQLの照合順序:utf8_unicode_ciってなんぞ?: CodeIgniterで発火する?

    前回はヴァリデートのコードをそれぞれのメソッドの頭に記述して、なんちゃって入力チェックのようなことをやった経緯を書きました。あんな実装でも変なエラーが出なくなってきたので、まあヨシとしてます。 んで、ようやく今回は検索機能の強化?について書けるかな?と考えていたんですが、どうやろうか?などと思案しながらスクリプトをいじっていると奇妙な現象?に遭遇したので、検索機能の強化はまた後回しにして今回はそれについて書きます。 結論から言うと自分がMySQLの照合順序なるものを全く理解していなかったというだけの話です。「あ~それね」「今更何言ってんの?」と言い切れる方は以下は読む必要はありません。なので以下は個人的なメモです(愚痴とも言う…マタカヨ)。 まず奇妙な現象というのは以下のようなモノです。 例の五十音パッドで「た」で始まる新市町村を検索します。 伊達市 2006-03-01 大仙市 2005