タグ

MySQLに関するoukastudioのブックマーク (19)

  • MySQLのVARCHARについて調べ直してみた | kanonjiのブログ

    MySQLにはストレージエンジンがいくつかあるので、その辺はちょっとごっちゃになってると思います。InnoDBかMyISAMかで、少し話が違ってくるとは思うけど、そこまでは追えてません。 VARCHAR(n)は文字数 昔はバイト数だったような気もするけど、今は文字数を設定します。 VARCHAR(255)で良いと思う CHAR とは対照的に、VARCHAR 値は必要な文字数と、長さを記録する為の1バイト(255よりも長いカラムは2バイト)だけを利用して格納できます。 http://dev.mysql.com/doc/refman/5.1/ja/char.html VARCHARは可変長なので、余分に設定してもストレージを無駄にう事は無いと思います。ただVARCHAR(256)以上は、長さの記録が1バイト増えるみたいなので、特に理由が無ければVARCHAR(255)に設定しておくのが良い

    oukastudio
    oukastudio 2015/03/19
    InnoDBの行サイズの上限はページサイズの約半分で、デフォルトでは約8000バイト 可変長カラム(VARBINARY, VARCHAR, BLOB, TEXT)のデータは行の外部に保存されるが、先頭の768バイトだけは行の内部に保存される よって例え
  • 株式会社スタイルズ

    AWSアドバンスドコンサルティングパートナーの一員として活動する株式会社スタイルズが、AWS導入、移行、開発、セキュリティ、運用保守など、すべてのご相談に乗らせていただきます。 AWSを導入したいが何から始めたらいいかわからない 既存のベンダーが新技術に弱く、良い提案がもらえない クラウドの導入にセキュリティの不安がある AWSをとりあえず導入したが、さらに活用していきたい 社内にAWSの知見を持っている人がいない AWSならではのシステム開発を詳しく知りたい

    株式会社スタイルズ
    oukastudio
    oukastudio 2013/10/09
    副次キーでのアクセスは、たとえそれがユニークキーであったとしても、 主キーでのアクセスに比べて、倍近くのI/Oが発生する
  • Amazon RDS編~MySQLとAmazon RDSとの比較~

    こんにちは!Rookieです。 以前のレシピに引き続き、今回もAmazon RDS編です! 今回はMySQLAmazon RDSの比較についてお話していきたいと思いますが、その前にAmazon RDSに関する情報をご紹介します! 先日、AWSの方でAmazon RDSにイベントサブスクリプション機能が追加されたと発表がありました。 この機能は、Amazon RDSのインスタンスに関連づけられたさまざまなイベントに対して、SNSを介し通知を受け取れるようになるというものです。 Amazon RDS DBインスタンスのストレージ不足や障害等が発生してしまった場合でも、すぐにプッシュ通知で確認することが可能です。 他にもバックアップの開始や終了、データベースのシャットダウンや再起動など40以上の通知タイプが利用可能です。 SNSとの連携でEメールメッセージとして通知を受信することもできるので、

  • 限界までMySQLを使い尽くす!!

    どこまで出来るか?!やれるところまでやってやるぜ!!と、威勢が良いのは若い間だけの話。オトナのオトコは、攻めるときはとことん攻めるが自らの限界もわきまえて賢く振る舞うのがスマートってものである。というわけで、今日はMySQLのいろいろな限界についてまとめてみる。皆さんも是非MySQLの限界を知り、MySQLをもっとスマートに使って頂きたい。 SQL文の最大長 MySQLサーバーが実行出来るSQL文の最大長は、max_allowed_packetシステム変数で表される。max_allowed_packetの最大値は1GBである。max_allowed_packetの値はセッションごとにも設定可能なので、デフォルトではそこそこの値(16MBなど)に設定しておいて、必要に応じて大きな対を使うと良いだろう。 データベースの個数 データベースオブジェクトの個数に制限はない。データベースオブジェクトは

    限界までMySQLを使い尽くす!!
    oukastudio
    oukastudio 2013/07/20
    行サイズ MySQL自体の上限は、64KBまでである。ただし、これにはBLOB(およびTEXT)は含まれない。BLOBは他の領域に格納されるからだ。さらに、ストレージエンジンごとに制限が存在する場合がある。 InnoDBは、テーブルスペー
  • oukasei.com

    oukasei.com 2023 著作権. 不許複製 プライバシーポリシー

    oukasei.com
  • Equivalent of mysql_list_tables in PHP PDO?

    oukastudio
    oukastudio 2013/04/24
    What about using a SQL query that does something like this : show tables Or, if needed, specifying the database : show tables from crawler And, if you only want to get some tables : show tables from crawler like 'site%' Actually, even if the mysql_list_tables() function exists, its manual page state
  • テーブル結合の後に多重ソート - OKWAVE

    mysql 4.1.21 を使用して、テーブル結合の後に複雑なルールでソートを行いたいです。結合条件は shop_id で行い、ソート条件は end_date の過ぎたデータを優先し、news_title の有無や image の値でソートします。 現在の SQL では end_date の条件指定がうまくいかず、フラグカラムを作成する方法など検討中です。他に簡単な方法があれば教えていただきたいです。 希望する結果は、テーブルA とテーブルB を shop_id で結合し、image の値が降順で、news_title が存在するデータを優先で表示します。end_date の過ぎたデータは image が '0' で news_title が空と同等として扱います。

    テーブル結合の後に多重ソート - OKWAVE
  • oukasei.com

    oukasei.com 2023 著作権. 不許複製 プライバシーポリシー

    oukasei.com
    oukastudio
    oukastudio 2013/03/09
    ロックのモード 共有モードと排他モードの二つがあるが、いずれも以下の特徴がある。 対象となる最新の有効なすべての行を読みとり、それをロックする その対象の行(最新データのレコード)が他の実行中トラン
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.16 情報関数

    BENCHMARK(count,expr) BENCHMARK() 関数は、式 expr を count の回数だけ繰り返し実行します。 MySQL による式の処理速度を計測する際に使用される場合もあります。 NULL や負の繰返し回数などの不適切な引数の場合、結果値は 0 または NULL です。 この使用目的は、mysql クライアント内から、クエリーの実行時間をレポートすることです。 mysql> SELECT BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye')); +---------------------------------------------------+ | BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye')) | +-----------------------------

    oukastudio
    oukastudio 2013/03/07
    LAST_INSERT_ID(), LAST_INSERT_ID(expr) MySQL 5.1.12 以降では、LAST_INSERT_ID() ( 引数なし ) は、最も最近に実行された INSERT 文の結果として AUTO_INCREMENT カラムに正常に インサートされた、自動的に生成された最初の値を戻します。
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.7.2.4 読取りのロック

    データのクエリーを実行してから、同じトランザクション内で関連データを挿入または更新する場合は、通常の SELECT ステートメントで十分な保護が提供されません。 ほかのトランザクションは、クエリーが実行されたばかりの同じ行を更新または削除できます。 InnoDB では、追加の安全性が提供される 2 つのタイプのロック読み取りがサポートされています。 SELECT ... FOR SHARE 読み取られる行に共有モードロックを設定します。 ほかのセッションもその行を読み取ることができますが、トランザクションがコミットするまで変更することはできません。 これらの行のいずれかがコミットされていない別のトランザクションによって変更された場合、クエリーはそのトランザクションが終了するまで待機してから、最新の値を使用します。 SELECT ... FOR SHARE は SELECT ... LOCK

    oukastudio
    oukastudio 2013/03/07
    もし最新データが別のクライアント接続のコミットされていないトランザクションに属していたら、そのトランザクションがコミットされるまで待ちます
  • oukasei.com - oukasei リソースおよび情報

    oukastudio
    oukastudio 2013/03/07
    分離レベルによる動作の違い MySQLのInnoDBでは、分離レベルによって各種操作の動作が変わってくる。 基本、別セッションのINSERTを認めるか否かが大きな違い。
  • カラムの値を1増やす(インクリメントする)(MySQL)ohanasiya_blog - Blog

    MySQLでアクセスカウンタなどを作るときに あるcolumnの値をインクリメントしたい場合があると思います. そういう場合はこのようにすると良いです. UPDATE myTabeName SET colname=colname+1 WHERE idColname=id;MySQLでアクセスカウンタなどを作るときに あるcolumnの値をインクリメントしたい場合があると思います. そういう場合はこのようにすると良いです. UPDATE myTabeName SET colname=colname+1 WHERE idColname=id;

    oukastudio
    oukastudio 2013/03/07
    MySQLでアクセスカウンタなどを作るときに あるcolumnの値をインクリメントしたい場合があると思います. そういう場合はこのようにすると良いです. UPDATE myTabeName SET colname=colname+1 WHERE idColname=id;
  • これだけは覚えておきたい!!MySQL の6つの自動変換 - sakaikの日々雑感~(T)編

    MySQLはとても気ぃつかい屋さんである。我々が投げる多少あいまいな指示も頑張って解釈し、なんとか文句を言わずに実行してみようと挑戦してみてくれる。 今日はそんなMySQLがケナゲに解釈してくれる自動変換について紹介しようと思う。この自動変換、ケナゲなMySQLの奥ゆかしさ故、出した指示と異なる動作をされたことに気がつかないことがある。ここで紹介する6つの自動変換をしっかり脳ミソにたたき込んでおけば、無用なトラブルにハマる時間も減るかもしれない。 1.[数値] 範囲外の数値は頭を押さえつけられる intやsmallint、bigintなどの数値型には、扱える範囲が決まっている。例えばint型なら最大21億ちょっとだ(unsignedの場合は43億弱)。これより大きい数字を登録するよう指示を出すとMySQLはどうするか。そう、頑張って入れられるところまで入れてくれるのである。「入れられるとこ

    これだけは覚えておきたい!!MySQL の6つの自動変換 - sakaikの日々雑感~(T)編
  • MySQLで全文検索 - FULLTEXTインデックスの基礎知識|blog|たたみラボ

    tatamilab.jp

    oukastudio
    oukastudio 2012/12/17
    4文字未満の検索語は無視される デフォルト状態だと、"cat" "dog" "マウス" などの検索語はすべて、「4文字未満の単語」として、無視されてしまいます。公式マニュアルのコメント部分でも、英語圏の方々が「えぇー、それは
  • MySQLでMyISAMとInnoDBが混在するトランザクションについて « Blog « MySQL Oracle データベース/システム開発 | トラックシステムズ TRACKSYSTEMS

    しゃちょーです。 しばらく宣伝が続いたので、DB Tracklayer開発中に気づいたちょっとおかしな感じのする話をしてみます。 MySQLでMyISAMとInnoDBが混在するトランザクションについて やっぱり今回もOracleから来た人向けの話。 Oracleの場合に(というか普通)トランザクションを考慮する時というのは、 一連の作業を一つの決定で処理したい時、またはすべき時に トランザクション中で一連の処理を行って、CommitまたはRoolbackするように処理を考える。 普通トランザクションとはこんな感じじゃないのかな。 とりあえず今回の話では、トランザクションのレベルの話とかロック関係の話は置いておいていただくとしてだ。 トランザクションは明示的に開始と終了を行いたいのであって 気にする必要があるのは、暗黙のうちにトランザクションが終了する物はないかということくら

    oukastudio
    oukastudio 2012/12/16
    InnoDBのテーブルはトランザクション継続中で MyISAMのテーブルはトランザクション中でも勝手にcommitされる(というかその概念がないのだな) MyISAMテーブルのデータが確定しても、トランザクションは確定および中断しない
  • mysqlにてバイナリ型のバックアップ: Ma note

    mysqlでバックアップしたファイルをリストアしようとしたときに、blob型のデータがうまくいかない現象にあった。 今までblob型を使うことがなかったので、今まで知らなかったが、 mysqldumpには、--hex-blobというオプションがある。どういうオプションかというと、 バイナリ型のデータをエスケープ処理を行わずに実際に格納された値の16進数表記で保存する。 これを指定しないとdefault-character-setがシフトJIS系の場合エスケープ処理に失敗し、 バイナリデータが破壊される場合がある。 らしい。 バックアップには、automysqlbackup というスクリプトを利用しているので、 (久々にチェックしたらバージョンUPしてた。4年越しのUPだ!) OPT="--quote-names --opt" の部分に、--hex-blobを追加して実行してみた。 おー。出

    oukastudio
    oukastudio 2012/12/06
    mysqldumpには、--hex-blobというオプションがある。どういうオプションかというと、 バイナリ型のデータをエスケープ処理を行わずに実際に格納された値の16進数表記で保存する。 これを指定しないとdefault-character-setがシフ
  • 指定した件数だけUPDATEする【MySQL】 - Programming Magic

    oukastudio
    oukastudio 2012/11/07
    INを使ったサブクエリ内でのLIMITは現在のMySQL(ver5.1)ではサポートされていないという点だ。 This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' マニュアルを見る限りMySQL6.0でもサポートはされていない。
  • tech-memo » MySQLのvarcharは、最大サイズ65,535(バージョン5.0.3以降)

    いろいろ勘違いしていたので整理。 varchar で指定するサイズは、バイト数ではなく文字数。 varchar(5)なフィールドに「あいうえお」を格納できる。 (クライアント文字コードが正しく設定されている前提の話) varcharの最大サイズは65,535。 ただし行にも最大サイズ(65,535「バイト」)があり、これに収まる限り。 blob、text型については別格納となるので、行サイズとしてはポインタ分のみ消費。 参照リファレンスは以下 The CHAR and VARCHAR Types The Maximum Number of Columns Per Table

  • 1