SQL

MySQLの レプリケーション遅延について

SQL

MySQL が System lock で kill しても KILLEDから繊維しなかった。 # slave の状況 show slave status\G # transaction SHOW ENGINE INNODB STATUS\G # pid の確認 SELECT trx_started,trx_query,trx_rows_locked FROM information_schema.INNODB_TRX; souda…

Mysql で特定id毎の上位ランキングを出す

SQL

以下は結構便利。 SELECT * FROM Table1 t1 WHERE 2 >= ( SELECT COUNT(*) FROM Table1 t2 WHERE t1.category = t2.category AND t2.point >= t1.point ) ORDER BY category,point desc select id, category, point, name from ( select *, @rank := if (@ca…

MySQLの max にNULLが含まれても関係ないらしい

SQL

MySQL で maxを取得しようとしたさい、あれどんな挙動するんやろと迷った 気にすることなかった。 mysql> select (NULL < 1); +------------+ | (NULL < 1) | +------------+ | NULL | +------------+ 1 row in set (0.00 sec) mysql> select (NULL > 0); +-…

PostgresとMySQLのcreatedbなどの違い

scientre.hateblo.jp

MySQL5.6から5.7にしたときに発生するエラー

SQL

djangoでMySQLを使ってやっていると、5.6から5.7に移行する必要があった。 group byの使用方法で問題があるらしい。 this is incompatible with sql_mode=only_full_group_by" 以下でMysqlのバージョンを調査して、テーブルを確認。 mysql > select version(…

SQLを複数起動する

SQL

my.cnfを何個か持てばその分SQLを違うソケットにたてられる。 MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.3.3 Unix 上での複数の MySQL インスタンスの実行 tweeeety.hateblo.jp

SQLのInsert INTOの方法

SQL

How to write flexible INSERT and UPDATE statements in MySQL · Baron Schwartz's Blog

load data infileをパイプから流し込む

課題 load dataは、STDINを入力にできるから、一時ファイル書き出しを省略して、subprocessで起動したload dataプロセスのSTDINにレコードを流し込んでinsert 上の、load dataのパターンそれぞれで、1万レコード単位で、PKでソートしつつインサートPK 解答 c…

MySQL5.7が立ち上がらないエラーが出た。

SQL

mysqlが立ち上がらないエラーが出た。 #service mysql start Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details. #systemctl status mysql.servic…

where句で"OR"を使いたい場合(index)

SQL

MySQLで"OR"を用いる時のインデックスがわからない。 結局、UNIONでがっちゃんこするしかなさそう。 mysql> SELECT COUNT(*) FROM table WHERE columnA = value1 OR columnB = value2; +----------+ | COUNT(*) | +----------+ | 1616 | +----------+ 1 row …

データベースのテーブル数算出とSolrグルーピングの仕様について

データベースのテーブル数算出する。 mysql> select count(*) from `information_schema`.`tables` where `table_schema` = 'database名'; +----------+ | count(*) | +----------+ | 34 | +----------+ 1 row in set (0.00 sec) teratail.com また、Solrに…

WebアクセスSQL挿入について考える(課題)。

(1) webページへのアクセスを、mysqlに保存するとしたら、どんなcreate tableにするか。 principal的なのものはcookie、対象はurl、あとはアクセス時間が、このドメインで必要な情報 アクセステーブルには、この3つの情報とテーブルへのinsert日時を保存。あ…

マルチインデックスという考え方

SQL

MySQLで大量データに対してクエリを投げる時、WHERE配下のカラム名にマルチインデックスを適応すればサクサクいく。 これ関してはEXPLAIN句で確認すればいい。 mysql> ALTER TABLE landing_pages ADD INDEX index_name(user_id, created) qiita.com phpjavas…

処理中のプロセスをバックグラウンドで回す

「Ctr + z」で一時停止をし、jobsで確認し、bg %~で対応する。 $ zcat db.sql.gz | mysql -u root db ^Z [1]+ 停止 zcat db.sql.gz | mysql -u root db $ jobs [1]+ 停止 zcat db.sql.gz | mysql -u root db $ bg %1 [1]+ zcat db.sql.gz | mysql -u root db…

BOLB/TEXTでインデックスを貼る。

SQL

最初の100文字のみインデックスとして使うみたいな指定が必要。 ERROR 1170 (42000): BLOB/TEXT column 'text_field' used in key specification without a key length create index new_index on table_name(text_field(100)); www.deftrash.com

MySQL5.6から5.7に変更する際に起こったエラーについて

vagrantsで今までMySQL5.6を使ってたが、速度が3倍になるということで5.7に変更。 はじめ以下の手順で確かめていた。うまくインストールできない。 # エラーの出る手順 [root # ] yum remove mariadb-libs [root # ] rm -rf /var/lib/mysql/ [root # ] yum l…

MYSQLを勉強するときに便利なサイト

SQL

www.dbonline.jp

references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use themが出た

SQL

このメッセージが出た場合は最初のcreatetableの際に変な設定が入っていることがある。 具体的に言うと後で全部の権限をuserに付与しても中のテーブルは特定のユーザしか見れなくなっている。 dumpしてloadした後にこのようなメッセージが出れば、以下の動作…

ミドルウェアとは何か

ミドルウェアって何って思って検索した。DBサーバとして動かすときに使うMySQLや Webサーバとして使うapacheなどらしい。 qiita.com

Mysqlのデータを変更する(MySQL-python==1.2.5)

データベースのqueryを整形する。データベースに突っ込む前に"をつけるのが必要なのとないのがあって訳わからん。 ついでにutf-8に変換しないといけないのと、conn.commit()しないとinsertが反映されないということでばりつまづいた。 # -*- coding: utf-8 -…

SQLとSolrの情報を削除する方法

簡単な処理をバッチ化した。MySQLにアクセスする方法がわかったことが大きな収穫。 # -*- coding: utf-8 -*- # vim:tabstop=4:shiftwidth=4:expandtab import sys import MySQLdb import json import urllib2 import argparse from datetime import datetime…

インデックスを理解する。

SQL

MySQLはインデックスを使うとうまくチューニングできるらしい。 なんかいいサイトないかと探していると発見。 qiita.com リンク先に一つずつアクセスして行って、学んでいこうとしてる。

mysqldump: [Warning] unknown variable 'loose-local-infile=1'について

SQL

以下のERROR、、ではなくてWarningが出たので、対処した。 mysqldump: [Warning] unknown variable 'loose-local-infile=1' 以下のサイトを読むと、これは[Error] unknown variableを出さないための裏技っぽい。 んなこと知らんがな。どうなっとんじゃ。 gih…

課題もらっちゃった。。

SQL

これについて解いていこうと思っている。 何か処理したレコード群を、既存のテーブルにon duplicateでinsertする課題。 1. バルクinsert 2. tsvに一旦出力して、ローカルload dataとリモートload data 3. tsvに一旦出力して、csv engineでtableに見せかけて…

SQLの集約化した後の合計値

SQL

こんな感じでまとめられる。 SELECT sum(conversions.value)*count(DISTINCT conversions.id)/count(*) as conversion_value FROM links LEFT OUTER JOIN stats ON links.id = stats.parent_id LEFT OUTER JOIN conversions ON links.id = conversions.link_…

MySQLのDATETIMEにNULLが入力されない場合について

csvをインポートしてmysqlのtableに入れた際、エラーが出た。 どうもsql_mode = STRICT_ALL_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATEの設定がかかっているらしい。 テストデータの際はDATETIMEだけ適当な日付を入力すればいいのかも。 fanblogs.jp あと、新たに…

DictCursorについて(MySQL-python)

DictCursorはCursorと違って、dictをreturnするらしい。 なので、 import MySQLdb.cursors from django.db import connection conn = connection.connection cur = conn.cursor(MySQLdb.cursors.DictCursor) の場合は、DictCursorを引き継いだdjangoのcursor…

djangoのローカル開発環境を作るためのsqlのDB登録方法

ただ、utf-8で行うだけ。create tableを本番と合わしたいなら確認すればいい。 mysql> show variables like "chara%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------…

SQLのdump,loadの話(付録:データ型)

SQL

dumpとはメモリやDISKのデータをファイル形式に出力することらしい。 # dump $ mysqldump -u username -ppassword database_name | gzip > dumpfile.sql.gz # load $ zcat dumpfile.sql.gz | mysql -u username -ppassword database_name qiita.com あとはデ…

git cloneのブランチ指定とSQL集約とline_profiler(バラバラ)

git cloneのブランチ指定 $ git clone -b ブランチ名 https://リポジトリのアドレス $ git commit -a -m "任意のコメント" //コミット (-aオプションは変更を自動検出してくれる) $ git branch //今いるブランチを確認 $ git checkout ブランチ名 *ブランチ…