タグ

mysqlに関するhalohalolinのブックマーク (52)

  • 【MySQL】大文字小文字、全角半角区別しないでマッチする検索をしたい at softelメモ

    問題 select * from member where namae like '%サトウ%'; こんなSQLで、namaeがサトウ、サトウ、さとう、サトウ(一部半角)何でもマッチさせたい! 答え では、これで。 select * from member where namae collate utf8_unicode_ci like '%サトウ%'; データベースがutf8でないときは、もうひとつ変換を入れて、 /* ERROR 1253: COLLATION 'utf8_unicode_ci' is not valid for CHARACTER SET 'ujis' など言われたら */ select * from member where convert(namae using utf8) collate utf8_unicode_ci like '%サトウ%'; 数字の全角/半

    【MySQL】大文字小文字、全角半角区別しないでマッチする検索をしたい at softelメモ
    halohalolin
    halohalolin 2018/11/27
    collate utf8_unicode_ci like '%キーワード%';で数字、アルファベット、半角カナ、全角カナ、ひらがな、カタカナと、かなり広範囲にわたってマッチするようになるらしい
  • MySQLのメモリ設定の勘所 – sawara.me

    MySQLサーバーをダウンさせた夜は数知れず。 その度にmy.cnfの設定を見なおしてみてはトライし、治ったと思いきや突然のダウン。 サーバーがダウンしてしまう原因は何かと聞かれれば、「メモリです」と断言しましょう。 メモリ設定は諸刃の剣。 パフォーマンスを最大に引き出すこともできればそれと引き換えにサーバーをダウンさせてしまうこともできるんです。 今回はMySQLのメモリの設定の勘所というかたちで紹介しようと思います。 グローバルバッファとスレッドバッファ メモリの設定についてまず「グローバルバッファ」と「スレッドバッファ」について理解しておくことが大事です。バッファとは一時的な記憶領域・つまりはメモリの領域のことなのですが。 グローバルバッファ MySQLで使用する全体的なメモリ使用量を計算するには グローバルバッファ + (スレッドバッファ × コネクション数) = メモリ使用量 と

    MySQLのメモリ設定の勘所 – sawara.me
  • MySQL IPアドレス用カラム

    MySQLのテーブルにIPアドレス用カラムを作る場合、文字列か整数型の選択がありますが、 ここでは整数で保存する場合について説明します。 テーブル定義でIPアドレス用カラムの指定 IPv4アドレス用カラムには、INTEGERにUNSIGNEDを付けて、32bit符号なし整数で指定するか、 VARBINARY(4)を指定するかの2通りがあります。確認した範囲では、どちらも同じように動作しました。 例 unsigned integerで定義 CREATE TABLE log( id INTEGER PRIMARY KEY AUTO_INCREMENT, ip INTEGER UNSIGNED ); これで作成したテーブルは以下のようになっています。 mysql> desc log; +-------+------------------+------+-----+---------+-----

    halohalolin
    halohalolin 2016/05/12
    IPv4アドレスのログを記録する際、そのまま文字列で格納するのではなく、挿入時はipアドレスをINET_ATON()でINT型にし、閲覧時はINET_NTOA()を用いると容量削減ができ良さそうだ。
  • Google Apps Scriptで行データを連想配列として扱う | Nikushi's blog

    This domain may be for sale!

    halohalolin
    halohalolin 2016/04/28
    my.cnfの設定ファイルが通常と異なる不明な場所にあって上手く設定できない場合、phpMyAdminからset global slow_query_log = 1;を実行することで、再起動するまではスロークエリーログが記録される
  • さぼてん: 【SQL】日本語検索が上手くいかない時【BINARY】

    Pg職に転職したいWebサイト制作。PHPとかMySQLとか。symfony、CakePHPPerl勉強。 データベースで日語を扱う時、条件を指定して検索結果が想定した通りにならないときがある。 SELECT * FROM table_name WHERE name LIKE '%山%' table_name から name に山の文字を含むデータを抽出するSQL文。LIKE によるあいまい検索。%はワイルドカード。0文字以上のあらゆる文字を表す。 UTF-8等マルチバイト文字列を扱う時に生じると思われるが、条件を満たしているデータが検索にヒットしない場合がある。 次のようなSQL文にすると望む結果が得られる。 SQL文が間違っていなければ。 SELECT * FROM table_name WHERE BINARY name LIKE '%山%'

    halohalolin
    halohalolin 2016/02/24
    SELECT文におけるマルチバイト文字列(例えば全角日本語)のWHERE一致判定について、絶対合っているのにヒットしない場合は、WHEREの後ろにBINARYを付けると改善することもある
  • MySQLのslow-query-logの出力場所を確認する - かまたま日記3

    1.my.cnfを見る ここに設定されていることが多い $ cat /etc/my.conf | grep slow slow_query_log=ON slow_query_log_file=/var/log/mysql-slow.log long_query_time=0.1 2.my.cnfを見る my.cnfに設定されてない場合以下のクエリを打ってみる mysql> show variables like 'slow%'; +---------------------+--------------------------------------+ | Variable_name | Value | +---------------------+--------------------------------------+ | slow_launch_time | 2 | | slo

    MySQLのslow-query-logの出力場所を確認する - かまたま日記3
    halohalolin
    halohalolin 2015/09/17
    show variables like 'slow%'; でスロークエリーログの出力先を確認することもできる
  • レコードがなければINSERT,あればUPDATEをするSQL - Qiita

    PrimaryキーまたはUniqueキーを指定して、レコードがなければINSERT、あればUPDATEしたい。 mysql INSERT … ON DUPLICATE KEY UPDATE文を使う mysql> desc foo; +-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | code | varchar(32) | NO | PRI | | | | name | varchar(256) | YES | | NULL | | +-------+--------------+------+-----+--------

    レコードがなければINSERT,あればUPDATEをするSQL - Qiita
    halohalolin
    halohalolin 2015/09/02
    mysqlではON DUPLICATE KEY UPDATE文を使えば、INSERTとUPDATEを一緒くたにできる。サーバ間の同期処理に使えそう。
  • Ground-SunLight

    — y2sunlight ,Since 2019-10-02 Ground Sunlight は「Windowsで作る - PHPプログラミングの開発環境」をテーマにしたサイトです。 オープンソースを利用している全ての人達に祝福を!

    halohalolin
    halohalolin 2015/06/05
    Windows版php&MySQL構成において、実際に正しくphp_mysql.dllをインストール済みなのに「指定されたモジュールが見つかりません」エラーが出る場合は、libmysql.dllが%SystemRoot%\system32内にセット済みか疑う
  • MySQL レプリケーションのセットアップ手順 - わくわく技術ランド

    想定していること † MySQL5.0 MySQLがすでに稼動中。レプリケーションの設定はしていない 今回MySQLをもう一台増やして2台構成とし、master、slaveの構成にする ※今回と状況が異なる場合は、MySQLのリファレンスマニュアルを読むといいです。 ↑ 1. レプリケーション用ユーザを作成する † レプリケーション用ユーザを作成する 作成するユーザーはスレーブがマスタのバイナリ ログを読み込むときに接続するユーザーとなる。 既存のユーザーでもレプリケーションは可能だが、ユーザ名とパスワードが master.info ファイル内にテキストで保存されるため、安全のためレプリケーションプロセスにだけ権限があるユーザを作成する 設定例(マスタのほうに設定) 192.168.23.0/24 内のネットワークで許可 ユーザー名:repl パスワード:slavepass mysql >

    halohalolin
    halohalolin 2015/01/09
    MySQLにおける複数サーバ同期に関するまとめ
  • MySQLのスロークエリログをローテートさせる。

    MySQLでスロークエリログ(log-slow-queries)を出力させ、そのログをログローテート(logrotate)機能でローテーションさせます。 MySQLスロークエリログの出力設定 スロークエリのログを出力する設定をmy.cnfに追記します。 今回はlog_query_timeを5秒に設定しています。この値を超える時間を要したクエリがログに出力されます。 出力されるログファイルはlog-slow-queriesで指定して下さい。 下記の例では/var/log/mysqld/ディレクトリにslow_query.logというファイルに出力させるように設定しました。( ´∀`) [root@centos5 ~]# vi /etc/my.cnf [mysqld] long_query_time=5 log-slow-queries=/var/log/mysqld/slow_query.l

    halohalolin
    halohalolin 2015/01/09
    MySQLのエラーログもローテーションする場合は、合わせて http://bit.ly/1zZoGYo も参考にする
  • ZabbixでMysqlを監視する

    今回は、Mysqlサーバをリソース監視システム(Zabbix)でリソース・死活監視する方法について整理して見ました。 運用中のMysqlのリソースを監視し、パフォーマンスのチューニングポイントを見つけてみましょう。 インストール環境とバージョン 今回、インストールするサーバとzabbixのバージョンは以下のようになります。 名前 バージョン ダウンロード元 ubuntu 10.04.4(64bit) http://releases.ubuntu.com/lucid/ ZABBIX 2.2.0 http://www.zabbix.com/ Zabbix Serverインストール 「Zabbix Serverのインストール手順」を参照してください。 Zabbix Agentインストール 「Zabbix Agentのインストール手順」を参照してください。 ※AgentサーバにはMysqlが設置さ

    ZabbixでMysqlを監視する
    halohalolin
    halohalolin 2014/04/30
    もし /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf と /usr/local/etc/zabbix_agentd.conf.d/custom_mysql.conf 両方の設定によって zabbix-agent が起動できない場合は、userparameter_mysql.conf側の文頭すべてに # をつけて無効化させると良い
  • MySQLのログの種類とログの仕方を調べてみた(実施例) | レンタルサーバー・自宅サーバー設定・構築のヒント

    MySQLのログの種類とログの仕方を調べてみた(実施例)

    halohalolin
    halohalolin 2013/11/12
    Linux&MySQL構成における、MySQLエラー ログ種類と設定方法。単に有効化しただけでは(バイナリログを除き)ログの容量でサーバがパンクする可能性があるので、別途対策が必要そうです。
  • Mysql slow queryの設定と解析方法 - 主夫ときどきプログラマ

    Mysql5.5でスロークエリに関して調べたのでまとめました。 Mysql5.1からスロークエリのパラメータが変わっているので注意しましょう。 そのためMysql5.1より前のバージョンでは内容が異なります。 設定を確認する Mysqlのコンソールからshow variablesコマンドで、スロークエリの設定を確認できます。 mysql> show variables like 'slow%'; +---------------------+----------------+ | Variable_name | Value | +---------------------+----------------+ | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | mysql-slow.log | +

    Mysql slow queryの設定と解析方法 - 主夫ときどきプログラマ
    halohalolin
    halohalolin 2013/11/12
    スロークエリーを有効化するのにmy.cnfを触りたくない場合は、SQLのコンソールより「set global slow_query_log = ON;」を実行すればよい他
  • XAMPPインストール後のMySQLの設定 [データベース] All About

    XAMPPインストール後のMySQLの設定XAMPPインストール後におこなうMySQLで日語表示をおこなうための設定、rootユーザーのパスワードの設定、データベースの作成、テーブルの作成について解説します。 XAMPPインストール後におこなうMySQLで日語表示をおこなうための設定、rootユーザーのパスワードの設定、データベースの作成、テーブルの作成について解説します。 MySQLで日語表示をおこなうための設定 「my.cnf」ファイルの設定 1. まずはXAMPPのコントロールパネルでMySQLの状態を確認します。ここではMySQLはまだ起動せずに先にMySQLで日語表示をおこなうための設定をおこないます。

    XAMPPインストール後のMySQLの設定 [データベース] All About
    halohalolin
    halohalolin 2013/07/03
    XAMPPではMySQLへ自動的に名前:root/パスワード:なしのアカウントが登録される、このまま使って公開領域でテストするのはセキュリティ上大変まずい。XAMPPの設定画面を使わず変更するなら mysqladmin -u root password パスワード
  • 第3回 すべてのMySQLユーザに高速な全文検索機能を! - mroongaの紹介 | gihyo.jp

    前回の地価マップでの事例紹介では、Ruby on Railsからgroongaとmroongaを使って位置情報検索をした事例を紹介しました。Active Recordを拡張して位置情報検索をするためのgemとその使い方も紹介していたので、Ruby on Railsユーザにとって実用的な内容だったのではないでしょうか。 今回は、前回使い方を紹介したmroongaについて、さらに紹介します。前回はmroongaの使い方がでてきましたが、今回は使い方の紹介はしません。その代わり、mroonga自身のことについて紹介します。mroongaの歴史、大事にしていること、さらにどのようなアーキテクチャになっているかについて説明します。 自分のアプリケーションで利用するプロダクトを検討するときに、プロダクトがどのような方向で作られているかを考慮していますか? 自分のアプリケーションが大事にしたいことをその

    第3回 すべてのMySQLユーザに高速な全文検索機能を! - mroongaの紹介 | gihyo.jp
    halohalolin
    halohalolin 2013/05/07
    更新内容をすぐに検索可能に/更新中に検索性能を落とさない/高速な位置情報検索/日本語対応
  • Redmine 2.3をCentOS 6.4にインストールする手順

    システム構成を下図に示します。 CentOSの設定 SELinuxを無効にする エディタで /etc/sysconfig/selinux を開き、 SELINUX の値を disabled に編集してください。 SELINUX=enforcing ↓ SELINUX=disabled 編集後、CentOSを再起動して下さい。 # reboot 再起動後、 getenforce コマンドを実行してSELinuxが無効になったことを確認してください。 Disabled と表示されればSELinuxは無効になっています。 # getenforce Disabled iptablesでHTTPを許可 CentOS 6.3の初期状態ではiptables(ファイアウォール)が有効になっており、外部からサーバ上の80/tcpポート(HTTP)に接続することができません。クライアントのwebブラウザからア

    halohalolin
    halohalolin 2013/03/21
    CentOS 6.4 における Redmine Redmine 2.3 / データベース MySQL 5.1.67 / webサーバ Apache 2.2.15(Railsの実行にはPassengerを使用) / Ruby 1.9.3インストールまとめ
  • グループ中で最大値を含む行を抽出するSQLはどう書けば良いでしょうか

    列A,Bでグループ化し、グループ中で列Cが最大値の列を取得したいのです。 数百万件あるので極力低コストにしたく、 副問合せはINDEXが効かないと聞いたのですが、 それ以外思いつきませんでした。 副問合せしない方法はないでしょうか? また、副問合せの中でコストの低いSQLはどんなものでしょうか。 ■テーブルです 名前 型 CUST_ID CHAR(8) BRANCH_ID CHAR(4) VALID_DATE DATE MYDATA VARCHAR2(20) CUST_ID BRAN VALID_DA MYDATA 19740704 0000 06-01-01 comment0001 19740704 0000 05-12-01 comment0000 19740704 0000 06-02-01 comment0002 19740704 0001 06-01-01 comment0011

    グループ中で最大値を含む行を抽出するSQLはどう書けば良いでしょうか
    halohalolin
    halohalolin 2013/02/08
    mySQLでも使える、各項目内での最大値を一つづつピックアップするSQL
  • MySQL TIPS 3 空間情報(geometry)を使って経度・緯度の検索を高速化する - イノベートな非日常

    以下のようなピタゴラスの定理を使った指定した経度緯度に最も近いデータを取得するSQLは結構ありがちですが、CPU負荷が高く効率も悪いのでMySQLに標準搭載となった空間情報(geometry)を使ってみることにします。 SELECT * FROM loc ORDER BY power(abs(latitude - 緯度 ), 2) + power(abs(longitude - 緯度 ), 2) LIMIT 1 MySQLの空間情報(geometry)機能はPostGIS(Postgresカスタマイズ)に比べると貧弱なので、その為の工夫を行います。例えばここのとおりのままだと逆にSQLが遅くなります。 まずは、テーブル定義から 通常のテーブル CREATE TABLE IF NOT EXISTS `loc` ( `loc_id` int(11) NOT NULL auto_incremen

    MySQL TIPS 3 空間情報(geometry)を使って経度・緯度の検索を高速化する - イノベートな非日常
    halohalolin
    halohalolin 2013/01/23
    phpMyAdmin3.3.0上では、geometry種別を指定したフィールドにSPATIALなKEYを作成できないので、SQLで別途設定する必要がある→ALTER TABLE テーブル名 ADD SPATIAL INDEX(フィールド);
  • はじめての MySQL で100万件のデータを管理する時に行ったチューニングまとめ

    MySQL の勉強をせずにフレームワーク等で SQL を書かずに Web サイトを構築していました。データ数も2万件程度でしたので、そこまで困ることはありませんでしたが、今回100万弱の商品データを扱う機会ができたので、MySQL のチューニングや発行する SQL について見直す機会がありました。 この記事では MySQL を高速化するのに行った対策など勉強したものを自分用にメモしておきました。 条件式で比較するカラムにインデックスを使用して高速化 商品コードで存在しない商品を見つけて、商品をDBに登録するという処理を行っている場合、4万件超えたころから処理に2秒以上かかるようになってきます。12万件超えた頃には10秒程度かかるようになってしまいましたが、商品コードのフィールドに対してカラムインデックスを貼ることで0.2秒に短縮することができました。 MySQL のリファレンスにも以下のよ

    halohalolin
    halohalolin 2013/01/22
    条件式で比較するカラムにインデックスを使用/select *は使わない/ORDER BY RAND()は重い/100万規模なら全文検索は専用エンジンを使うべしなど
  • layer8.sh

    This domain may be for sale!

    halohalolin
    halohalolin 2012/10/17
    MySQLのプロセスが高くなっている場合は、時間の掛かるプロセスが発生している恐れが有る、とりあえずコマンドプロンプトでMySQLに直接接続してSHOW PROCESSLIST;でプロセス確認、KILL <Id>;で長時間プロセスを強制終了