タグ

ブックマーク / yakst.com (23)

  • MySQL 5.7の新機能完全リスト | Yakst

    MySQL 5.7には150を超える新機能がある。 MySQLのマニュアルはとてもいいものだが、少し長すぎる。これは、新機能の箇条書きリストだ。それぞれの機能について1つずつまとめるように頑張ってある。なので、 InnoDBのネイティブパーティショニング については、InnoDBの項かパーティショニングの項のどちらかにだけ載っている。 MySQL 5.7.8 RC2はここからダウンロードできる それか、yumかaptのリポジトリーからもインストール可能だ。 レプリケーション関連 マルチソースレプリケーション(訳注: 1スレーブに複数マスターを設定可能になった) [ 1 ] オンラインでのGTIDの有効化 [ 1 2 3 ] 準同期レプリケーションの性能向上 [ 1 2 ] ロスレス準同期レプリケーション [ 1 2 ] 準同期レプリケーションでいくつのスレーブからACKが返ってくるまで待つ

    MySQL 5.7の新機能完全リスト | Yakst
  • Bashのよくある間違い | Yakst

    原文は2015年8月22日時点のものを利用しており、それ以降に追記、更新されている可能性があります。 翻訳は原作者の許可を得て公開されています。 Thanks for GreyCat! このページはBashプログラマーが陥りがちなよくあるエラーについてまとめました。以下の例は全てなんらかの欠陥があります。 クオートをいつも使い、どんな理由があっても単語分割を使わなければ、多くの落とし穴からあなた自身を守ることができます!単語分割はクオート表現をしない場合にはデフォルトでオンになっている、Bourneシェルから継承された壊れたレガシーな設計ミスです。落とし穴の大半はクオートされていない展開になんらか関連し、単語分割しその結果をグロブします。 1. for i in $(ls *.mp3) BASHプログラマーたちがループを書く際にもっとも犯しがちなよくあるミスは以下のような感じです。: f

    Bashのよくある間違い | Yakst
  • InnoDBにおける効果的な関数インデックス(MySQL Server Blogより) | Yakst

    MySQL 5.7では生成列の機能が追加され実体化されない仮想列を作成できるようになった。ユースケースとしては関数インデックスを効果的に利用すると、JSONなどをうまく扱える可能性がある。 免責事項 この記事はJimmy Yang氏によるMySQL Server Blogの投稿「JSON Labs Release: Effective Functional Indexes in InnoDB」(2015/4/9)をユーザが翻訳したものであり、Oracle公式の文書ではありません。 MySQL 5.7.6では、我々は生成列(Generated Columns)と呼ばれる新しい機能を追加した。最初の段階では全ての生成列は、仮想的なものであってもマテリアライズされていた。これでは不要なディスクスペースが使用され、ディスクI/Oが発生するだけでなく、いかなるテーブルの変更に対してもテーブルを完全に

    InnoDBにおける効果的な関数インデックス(MySQL Server Blogより) | Yakst
  • MySQLのinformation_schemaの便利なクエリ(MySQL Step-by-Step Blogより) | Yakst

    出典について この記事はMySQL Step-by-Step BlogのUseful queries on MySQL information_schema(2015/07/15)を翻訳したものです。 MySQLのinformation_schemaはデータベースのインスタンス、ステータス...などなどの日々のDBAの仕事に必要とされる有用な情報を備えている。 私が日々使う基的なinformation_schemaへのいくつかのシンプルなクエリがあり、私自身が参照するためにこの投稿を書いており、または誰か他の人にも良いリファレンスになるだろう... 主キーまたはユニークキーがないテーブルをみつける 主キーは非常に重要であり、MySQLのInnoDBのテーブルでは主キーをクラスタインデックスとして利用するため、主キーがないと深刻な性能問題につながりかねない。 主キーがないと、スレーブのロギ

    MySQLのinformation_schemaの便利なクエリ(MySQL Step-by-Step Blogより) | Yakst
  • MySQL 5.7におけるサーバーのデフォルト値の改善 (MySQL Server Blogより) | Yakst

    MySQL 5.7でのデフォルト値の変更について簡単に紹介する。レプリケーション、InnoDB、パフォーマンススキーマ、セキュリティー、オプティマイザ、その他全般の改善など様々な改善がされている。 免責事項 この記事はMatt Lord氏によるMySQL Server Blogの投稿「Improved Server Defaults in 5.7」(2015/7/22)をユーザが翻訳したものであり、Oracle公式の文書ではありません。 Morganと私はしばらく前にMySQLの"今やもう良くない(out of the box)"設定および挙動のデフォルト値を改善する計画を開始した。コミュニティーと密接に実施することにより、すばらしい改善の一覧が作成できた。これはMySQL 5.7.7のリリースから成果を出し始めた。私は何が変わったか、通常のユーザーおよびインストールの場合、なぜMySQL

    MySQL 5.7におけるサーバーのデフォルト値の改善 (MySQL Server Blogより) | Yakst
  • 類い稀なMySQLのJavaScript Connector (MySQL High Availabilityより) | Yakst

    node.jsを使ってMySQLへのデータアクセスを行うmysql-jsを紹介する。これを利用すればSQLを使わずにオブジェクト指向プログラミングの恩恵を受けることが出来る。 出典について この記事はcraigrussell氏によるMySQL High Availabilityの投稿「The JavaScript Connector for MySQL you never heard of」(2015/7/14)をユーザが翻訳したものであり、Oracle公式の文書ではありません。 Webサーバをたてて、node.jsとExpressを使ってデータベースに接続するのはかつてないほど簡単になっている。node.jsを使ってRDBからデータを取り出すには、かつてはユーザーがSQL技術に熟練している必要があった。 そこでMySQLの開発チームは、MySQLからのドキュメントを保存、検索し、nod

    類い稀なMySQLのJavaScript Connector (MySQL High Availabilityより) | Yakst
  • MySQLおよびMariaDBに大きなサイズの行を挿入する | Yakst

    MySQLで大きなサイズのデータを挿入する際の注意点について記載する。max_allowed_packet, innodb_log_file_sizeに注意し、マルチパートアップロードにmysql_stmt_send_log_data関数を使う。 出典について この記事は「Inserting large rows in MySQL and MariaDB」(2015/7/20)を翻訳したものである。 MySQLにおけるLONGBLOBの最大容量は4GBであり、max_allowed_packetの最大値のサイズは1GBである為、私はLONGBLOBを完全に使いきることができるのだろうかと思い立った。 そこでこれをテストし始めた。MySQL Connector/Pythonを使ってPythonスクリプトを書き、MySQL Sandboxを使ってMySQL 5.6.25のインスタンスを作成した

    MySQLおよびMariaDBに大きなサイズの行を挿入する | Yakst
  • MySQL 5.7におけるCREATE USERコマンドの改善(MySQL Server Blogより) | Yakst

    MySQL 5.6までユーザーを作成する時にいくつかの制約があり実現可能でも複雑であったりするものがいくつかあった。MySQL 5.7ではCREATE USERコマンドが改良され、パスワードと認証プラグインの同時設定、ユーザーの無効化、個別のパスワード期限切れポリシ設定、SSL必須化、リソース制限が簡易にできるようになった。 免責事項 この記事はTodd Farmer氏によるMySQL Server Blogの投稿(2015/6/24)をユーザが翻訳したものであり、Oracle公式の文書ではありません。 MySQL 5.7より前は、CREATE USERコマンドにはたくさんの制約があった。 認証プラグインとパスワードの両方を設定する方法がない ユーザーを無効化する方法がない ユーザーに対するリソース制限を行う方法がない デフォルト以外のパスワード期限切れポリシを設定する方法がない SSL/

    MySQL 5.7におけるCREATE USERコマンドの改善(MySQL Server Blogより) | Yakst
  • MySQL 5.7の重要機能まとめ | Yakst

    MySQL Performance Blogの翻訳。MySQL 5.7にはたくさんの改善や新機能が盛り込まれていますが、その中でも特に重要なものについてのまとめ。 ある日、Percona Supportの顧客とMySQL 5.7の新機能について議論する機会があったのですが、その後、重要な機能をまとめたリストがあったらいいんじゃないかと考えました。最新のMySQL 5.7.6 リリース予定版(RC)が、素晴らしい機能を詰め込んで公開されたばかり。これがMySQL 5.7の重要機能一覧です。 レプリケーション機能の拡充 MySQL 5.7の最重要機能の1つは、マルチソースレプリケーションでしょう。この機能では、スレーブに対して複数のマスタを指定でき、これまでのマスタが1台のみという制限がなくなります。同僚が書いたマルチソースレプリケーションについてのいいブログ記事(日語訳)が役に立つはずです

    MySQL 5.7の重要機能まとめ | Yakst
  • PostgreSQLのアンチパターン : 何でもかんでもjsonに入れる | Yakst

    PostgreSQL 9.2より追加されたJSON型だが、特徴を理解して適切に使わないと色々な副作用に悩まされることになる。その問題点を挙げると共に、どのような場合に使うべきかの指針を示す。 PostgreSQLは、データ型としてjsonをサポートしています。しかし、やりたいことがある時に何でもかんでもjson型を使ってしまうというのはやめるべきです。これは、hstoreや新しく登場したjsonb型にも同じことが言えます。これらの型は必要な時には便利なツールになりますが、PostgreSQLでデータのモデリングを行う際に最初に検討すべきものではありません。 なぜなら、データを呼び出したり操作したりするのが難しくなってしまうためです。 何もかも同じところに入れてしまおうとすることによるアンチパターンをご存知の読者もいるでしょう。EAVアンチパターンは、長らくデータベーススキーマにおける必要悪

    PostgreSQLのアンチパターン : 何でもかんでもjsonに入れる | Yakst
  • MySQLインデックスの基礎 : ひとつのテーブルに対するクエリの最適化法 | Yakst

    MySQLのインデックスを効果的に使うにはどうしたらいいのかについての分かりやすい解説。そもそもインデックスの役割はとは何か、そしてどうすればその役割を果たしてくれるのかを説明する。 たとえ1つのテーブルだけに対して実行されるクエリでも、パフォーマンスが悪いというのはよくあることです。その理由は簡単で、インデックスの作り方がまずいため、実行計画がおかしくなってしまうのです。ここでは、1つのテーブルのみに対する色々なクエリを最適化するためのガイドラインを挙げてみたいと思います。 おことわり : あらゆる状況をカバーしようとはせず、一般的なガイドラインを提示するに留めるつもりです。ここで挙げたものがうまく適用できない例を簡単に見つけることができるのは間違いないでしょうが、ほとんどの場合はここに書いたことが十分なのも事実です。また、MySQL 5.6以上にあるIndex Condition Pu

    MySQLインデックスの基礎 : ひとつのテーブルに対するクエリの最適化法 | Yakst
  • DBAのためのmysqldumpのtips 25選 | Yakst

    MySQL標準のダンプツールmysqldumpについて、基礎的な使い方からよく使われるオプション、特徴までを含む25個の問答集。 1) mysqldumpはテキストバックアップツール?それともバイナリバックアップツール? テキストバックアップツールだ。バックアップファイルを開けば、データベースとその中のオブジェクトを作り直すための全文が見られる。テーブルにデータを詰め込むためのinsert文ももちろん含まれている。 2) mysqldumpのコマンドラインオプションは? $ mysqldump -u [uname] -p[pass] –databases [dbname] [dbname2] > [backupfile.sql] 3) 全データベースのバックアップはどうしたらいい? $ mysqldump -u root -p –all-databases > backupfile.sql

    DBAのためのmysqldumpのtips 25選 | Yakst
  • bashで素晴らしく生産性を上げるための10のテクニック | Yakst

    よく使うコマンドの組み合わせを関数として.bashrcに書いておく事で、色々な操作が簡単になる。筆者の.bashrcとそこに書かれた実用的な関数のサンプル、使用例。 (訳者注) 原文タイトルが「Ten tips for wonderful bash productivity」なので、10のテクニックというタイトルにしていますが、実際には9つしかありません。原文筆者に指摘したところ人も自覚されていなかった模様?です。悪しからず。 私はいつも自分のbashの環境をいじったり直したりしています。同じような問題に何度も遭遇しては、その度に解決策を探さねばなりません。うんざりして座り込んでしまうまでそれは続きます。お前いつも座って仕事してるだろって? ええ、でももう皆さんお分かりでしょう。そういう場合は、カスタム関数を作って、それを.bashrcに書き込んで、ログインする可能性のあるマシン全部に入

    bashで素晴らしく生産性を上げるための10のテクニック | Yakst
  • MySQLのレプリケーションでありがちな10の問題 | Yakst

    レプリケーションの問題でよくある10パターン。 1) セッションのみで有効なバイナリログ sql_log_bin = 0を設定すると、そのセッション内でバイナリログを無効にできる。つまり、マスタのセッション内で実行したDMLやDDLは、スレーブにはレプリケーションされない。 マスタでバイナリログをオフにする。 mysql> set sql_log_bin = 0 ; Query OK, 0 rows affected (0.00 sec) reptestデータベースにテーブルを作成してみる(マスタ上で実行)。 mysql> create table reptest(ID int) ; Query OK, 0 rows affected (0.01 sec) mysql> show tables ; +-------------------+ | Tables_in_reptest | +-

    MySQLのレプリケーションでありがちな10の問題 | Yakst
  • MySQLの新しいデータディクショナリー | Yakst

    MySQL 5.7.5-lab-ddで公開されているMySQLの新しいデータディクショナリー(オブジェクト定義の保存先)についての概要を翻訳。 長い間、MySQLのデータディクショナリーはイケてないと言われてきた。Morganのブログ記事やMySQLのアーキテクチャーに関するStewart Smithのブログ記事みたいに、多くの人が「FRMファイルオワコン」と主張している。 我々は新しく改善されたデータディクショナリーを設計して実装しているところ。その設計のゴールは、 データディクショナリーをトランザクションに対応したストレージの中に入れること。まずはInnoDB、他のストレージエンジンもそれに追随していく。 バラバラに保存されたデータディクショナリーを一箇所にまとめて保存すること。 全てのテーブル定義情報は同じ方法で保存され、ディクショナリーオブジェクトのための統一されたAPIでアクセス

    hiromark
    hiromark 2014/12/16
    これ、まだ動かしてないけど、超期待。
  • プログラミング初心者に言ってはいけないこと | Yakst

    経験あるプログラマが初心者に言ってしまいがちだが、初心者のモチベーションに悪影響を与えるパターンを指摘する。言った方、言われた方、あるいは聞いたなど、何らかの形で誰もが身に覚えのある内容。 経験のあるプログラマと、プログラミングを習い始めたばかりの初心者の会話の例。 プログラマ : やあ、プログラミングの勉強を始めたんだって?いいじゃないか、何を勉強してるんだい? 初心者 : PHPHTMLの基礎をやってるんです。MacTextMateエディタを使ってます。 プログラマ : ひええ、PHPなんて間抜けな言語かよ。Ruby on Railsを覚えて、Herokuにデプロイ、Vimでコーディングした方がいいよ。TextMateなんて初心者向きじゃないか。それから、Node.jsもやった方がいいな。あれはすっっっごくいいぜ。ノンブロッキングIOだからな。ヒャッハー! 初心者 : うーん、そう

    プログラミング初心者に言ってはいけないこと | Yakst
  • MySQLバージョンアップのベストプラクティス | Yakst

    MySQL Performance Blogの翻訳。Perconaのサポートエンジニアによる、MySQLバージョンアップの様々なパターンと、その利点・欠点、手順の解説。バージョンアップ実施前の、事前調査とテストが重要であるとの指摘も。 MySQLのバージョンアップ(訳注 : 原文ではupgrade、以下同じ)はどこかで必要になるタスクだし、我々Percona SupportでもMySQLバージョンアップのベストプラクティスについての色々な質問を受け付けている。この記事では、色々なシナリオにおけるMySQLバージョンアップの推奨できる方法に焦点を当ててみたい。 MySQLのバージョンアップはなぜ必要になってしまうのか?その理由は色々だが、新機能が必要、パフォーマンスの改善、バグ修正などがあるだろう。しかし、アプリケーションと組み合わせた上で事前に広範囲なテストをしておかないと、リスクの大きい

    MySQLバージョンアップのベストプラクティス | Yakst
  • いつどのようにInnoDBを共通テーブルスペースから移動するか | Yakst

    InnoDBで共通テーブルスペースにデータを格納した場合にデータファイルが肥大化する問題の解決手段について実例を交えて紹介する。 August 22, 2014 by Fernando Laudares 先の投稿「MySQLのibdata1ディスクスペースの問題と大きなテーブルについて詳しくみる」で、 共通テーブルスペースと呼ばれるところに属する大きなテーブルを持つという観点から、ibdata1の肥大化問題についてみた。 先の投稿をする動機となった特定のケースでは、サーバー上のディスクスペースが枯渇し、ibdata1ファイルを縮小する方法を探している顧客がいた。 ご存じの通り、そのファイル(または、共有テーブルスペースを構成するibdataファイル一式)は、 innodb_file_per_tableが無効になっているとき全てのInnoDBのテーブルのデータを格納するだけでなく、 UNDO

  • 大規模環境でMySQLのGTIDを適用して得られた教訓 | Yakst

    MySQL 5.6からの機能であるGTIDを、Facebookの環境に適用した際の流れと主な不具合、そしてそれらの修正点について、Facebookのエンジニアによるまとめ。 by Evan Elias and Santosh Praneeth Banda Global Transaction ID (GTID)は、MySQL 5.6の新機能の中でも最も使わずにはいられない機能の一つだ。このおかげで、フェイルオーバやポイントインタイムリカバリ、階層を持ったレプリケーションなどに非常に有益だし、クラッシュセーフなマルチスレッドレプリケーションの必須条件にもなっている。この数ヶ月で、我々はFacebookの全ての番用MySQLインスタンスで、GTIDを有効にした。その中で、この機能の適用方法や操作について、たくさんの知見が得られた。たくさんのサーバサイドの修正事項については、WebScaleS

    大規模環境でMySQLのGTIDを適用して得られた教訓 | Yakst
    hiromark
    hiromark 2014/09/24
    この記事は面白い
  • [Q&A]MySQL開発でやってしまいがちな致命的ミス | Yakst

    Percona MySQL Webinarsの発表(MYSQL開発でやってしまいがちな致命的なミスについて)のQAをご紹介します。 発表はSQLアンチパターン著者のBill Karwinさんの発表です。 オリジナル: http://www.percona.com/resources/mysql-webinars/how-avoid-even-more-common-deadly-mysql-development-mistakes July 17, 2014 by Bill Karwin 水曜日に「MySQLを開発する上でよく起こる(そして致命的な)ミスをどのように回避するか」をPercona MySQL webinarsで発表した。お見逃の際は、ビデオとスライドを見る為に登録すればまだご覧にいただける。 参加いただいた皆様、そしてとりわけすばらしい質問をしていただきありがたく思っている

    [Q&A]MySQL開発でやってしまいがちな致命的ミス | Yakst