MySQL 総合 Part26 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
会社で使ってる場合は>>39さんの言うようにやることが沢山あるから気軽に出来るものではないけど、
個人で使ってる人はバージョンアップよくする?
自分は現在5.6.20のままで次バージョンアップするのはPC買い換える時にと思ってるけど。 MariaDBとMySQLって、結局どうなるの?
やっぱMariaDBが主流になるのかな Oracleに飼い殺しされるとか危惧されてたけど
8.0も出るみたいだし、このまま使い続けそう Oracleを信じていいのか?
Java、Solaris、Sunの現状を知っているか? 去年のなつだったか、脆弱性の問題が出て
Mariaは即時対応したけれど
Oracleはしばらく放置していなかったよね >>45
知れよ!w
端的な印象を言えば、飼い殺しだ。 Auroraって言うのを使えば良くね?
あれもMySQL互換でしょ なんだかんだ言っても結局、一番まともなのはOracleだから仕方ない。 innodb_log_buffer_size
innodb_log_file_size
この項目を入れるとエラーになるようになりました。
今、サーバーが死んでしまい、新たに1から構築し直しています。
バックアップしてあったmy.cnfファイルを使っていますが、
各種設定ファイルはバックアップから引き継いで(もしくは目視で見ながら書き写し)で設定しているので、
ほとんどの設定は同じに近いと思います。
サーバーに触れるのは初めてでなんとか構築した状態で、
もはやその時何をやったか記憶が曖昧です。
my.cnf.d内の各ファイルは未編集で、編集したのはmy.cnfだけでした。
php.iniもバックアップからの復元です。
何か違う場所で編集することがあるのでしょうか?
MariaDB 5.5.56です。 カラムが3つある簡単なテーブルに
INSERT INTO table () VALUES ("1","2","3"),("4","5","6")
のように、カラムを空にして値をINSERTしても
正しく実行出来たのですが、これはそういう仕様になっているのでしょうか? できたんじゃったらそうなんじゃろ。
気になるならドキュメントを読むがよい。 >>53
標準SQLでもカラム数と値が同じなら、そのカラム順にinsertする仕様になっている。ただし勧めない。 INSERT INTO .. ON DUPLICATE KEY UPDATE
を実行した時に、insert, updateがそれぞれ何件あったのかを一緒に取得したいのですが、上のsqlの後にどんなsql文を追加すれば可能でしょうか? Character set 'utf-8' is not a compiled character set and
is not specified in the '/usr/share/mysql/charsets/Index.xml' file
というエラーが出て、Index.xmlを見てみたのですが
utf-8はちゃんとありました
エラーが出た原因がよくわかりません 何がしたいのかイマイチよくわからん。
こういうことか?
====
S ELECT @count := count(*) F ROM table;
S ET @pagesize = 10;
S ET @pagenum = 3;
S ET @offset = @pagesize * (@pagenum-1);
P REPARE STMT F ROM 'S ELECT *, ? count F ROM table LIMIT ? OFFSET ?';
E XECUTE STMT USING @count, @pagesize, @offset;
==== mysql(5.6 wni)
mysql tuner を使ったところ↓のような状況なんですが、この中で
×の付いている項目(ここでは3つ)について改善するためには
iniファイルでどのような設定にすればいいんでしょ?
ちなみにMyIsamは使う気も無し、使ってるのはInnodbのみです
https://dotup.org/uploda/dotup.org1385446.jpg innodb_buffer_pool_sizeとsort_buffer_sizeいくつよ
とりあえず増やしとけって書いてある >>65
レスありがと
innodb_buffer_pool_size は mysqld で128Mを指定、sort_buffer_size は見当たらないです show variables like '%sort%';
ではsort_buffer_size は 256kb(?)でした。 mysqldセクションでsort_buffer_sizeとinnodb_buffer_pool_sizの値を変えて試してみます。 mysqlなんですが
外部結合などの依存関係を無視して強制的に
データを削除したいんですがどうしたら良いですか? constraintを外すなら
alter table 〜 drop foreign key 〜
で消しちゃえば Likeの部分一致使ったり
Join使いまくったり
インデックスろくに使わなかったり
Entity Attribute Valueなるアンチパターンに沿った構造のテーブルを作って
更に大量のデータを入れたら
検索に二時間掛かったりするようになった
ユーザーがページをそっ閉じしても
二時間も忠犬の如く処理し続けるDBのエンジン 正確にはデュアルライセンス。
GPLか独自ライセンスの二択。 innodbが壊れたのでinnodb_force_recovery = 1で修復したけど
データが失われていないかどうかが気になる
壊れてたのはインデックスだけなのか?
データが消えてたらやばいよね innodbが壊れる環境自体がヤバい気もする。
システムとかハードウェアとか運用とか。
まあ、うちはそういう目にあったことがないから。 >innodbが壊れる環境
メモリが足りないのでスワップが発生しまくりでそこに負荷が生じた…とか? 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
NVRTDIY5WF utf8mb4でもINSERTできない文字があるのですが、どのようにすればINSERTできるようになりますか?
例えば
?( 'ω' )? insert into tt value ('\\\\?( ''ω'' )? ////'); 文字化けしているけど、
目の所のシングルコーテーションを二つにすれば上手く行きそう あ、そういうことですか。。。
すいません、初心者なもので
ありがとうございます
もうすこしがんばってみます MySQLのデータベースをWordPressで使っています。
Web上のレンタルサーバに置いているWordPressのミラーをローカルなサーバ上に作っています。
ただ、データベースの同期の方法がわからず、定期的に丸ごとコピーしていて、非常に時間がかかります。
変更のあった部分だけをミラーリングする方法について、
何かヒントや参考になるサイトをご紹介いただけないでしょうか。
よろしくお願いします。 >>88
丸ごととは?
ファイルコピー?mysqldump? >>89
ありがとうございます。
mysqldumpそのものを知らなかった、というレベルでして…。
日付指定のバックアップ、リストアができるんでしょうか? 素朴な疑問ですが、MySQLのSET型は、
1つのカラムにカンマ区切りでデータを格納できます。
しかし、カンマ区切りでデータを格納するのはバッドノウハウだと
データベース関連の書籍などで表示されています。
どうしてSET型があるのでしょうか? >>92
無能な著者が覚えたてのバッドノウハウという単語を使いたかっただけだから気にすんな
あとその本は自治体の古紙回収にだせば再生紙として価値があたえられるからオススメする >>92
その本は、MySQL限定ではなく、データベース一般についてだったのでは?
一般論としては、複数の値の記録にカンマ区切りテキストは使うな、正規化して別テーブルに割れ、となるはず。
MySQLには、SETとかENUMとかC言語っぽい特殊な型がある。便利だったり効率的だったりするので、MySQLべったりでよければ検討するべき。 いくらバカがマジョリティーだからといって
バカ向けの戒めを一般論とうそぶくのは図に乗り過ぎだと思うよ まぁ何でもメリットとデメリットを比較検討した上で使う分には問題ない
アンチパターンってのは何も考えずにやるのは止めとけってこと >>96
> バカ向けの戒めを一般論とうそぶく
意味不明。
何が言いたいのか? >>98
何か裏の意味があるんじゃないかとか気になっちゃってるの?
例えばキミがバカだとか?
まあそれは俺には否定できないけどw
安心しな>>96に書いてある通りだよw なお意味不明。
おまえがバカであることはわかったので、会話終了。 >>100
あらそうおめでとう
また一つ勘違いが増えたねw ☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆ MysqlがすぐおちるのですがMariaDBにすれば改善されるのでしょうか?
よく出るエラーメッセージはこんなやつです。
mysqli_set_charset(): Error executing query in DBのURL
MariaDBはMysqlに比べてどのぐらい優れているのかもわからないので教えていただければ幸いです。 MysqlがすぐおちるのですがMariaDBにすれば改善されるのでしょうか?
よく出るエラーメッセージはこんなやつです。
mysqli_set_charset(): Error executing query in DBのURL
MariaDBはMysqlに比べてどのぐらい優れているのかもわからないので教えていただければ幸いです。 >>104
設定がおかしいからだと
どういう設定しているか詳細を晒してみると良いかも エラーが出るから他のRDBMSに乗り換えるという発想が大胆! 8.0は性能二倍だって
MariaDBいらなくね?
MySQL 8.0正式版がリリース。性能が最大で2倍、JSONデータや地理情報などサポート。ロールによるユーザー権限の管理も可能に
http://www.publickey1.jp/blog/18/mysql_802json.html >ロールによるユーザー権限の管理も可能に
これが出来るようになるのか。 MySQLは、コミュニティ版でもスレッドプールが使えるようになった? varcharの文字列の途中にタブコード(\t : 0x09)を入れたいのですけど、
例えば、'aaa\tbbb'というふうにタブコードを入れて、
読みだしてみたら、'aaa bbb'というふうにタブコードが2つの半角スペースに
置き換わっているような気がします。
タブコードを文字列の間に入れられないんでしょうか?
ちなみにタブコードで区切られたvarcharっをキーにして
利用するつもりです。 自己レスです。
文字列のなかにタブコードがあっても
全く同じように、普通に処理できました。
お騒がせしました。 https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html
https://dev.mysql.com/doc/refman/5.6/ja/mysqldump.html
MySQLの公式リファレンスは一部和訳されてるけど、この和訳って正しいの?
例えば
The mysqldump client utility performs logical backups,
↓
mysqldump クライアントは、論理バックアップ を実行するユーティリティーで、
こういう翻訳になるのはisが入っているときだけだよね? >>117
そういう機械翻訳じみた発想は捨てろ
一般動詞だから絶対こうなるとかないから >>117
信用できないなら原文だけ読んでたほうが幸せになれるよ >>118
mysqldump クライアントユーティリティーは論理バックアップ を実行し、
普通に翻訳するとこうなると思うんだけど>>117の和訳は何か意図があるの? >>122
どっちも同じ意味だろ?翻訳ってそういうもんだとしか言えん 翻訳者に自由はないのか?
せっかく訳してくれてるのに。
そこまでいうなら、おまえが正確無比な翻訳を公開してもいいよ。 >>122
日本語とえいごが一対一対応する訳ねぇだろ 技術系の書籍の日本語訳に文句を言って自分の無能を棚にあげている奴は多いが
その中の決して少くない数の人々は>>122のようなガチアスペだという事実 Windows10で、MySQL5.6.40を使ってます。
Pythonから利用しています。
連続して10万件ほどデータを書き込みしたいのですけど、
1つのデータをinsertしたらcommitしたほうがいいのでしょうか?
それとも10万件insertしたあとで1回だけcommitしたほうがいいのでしょうか? その10万件のデータが全部Insertされないと整合性がとれないなら、最後に1回Commitで医院で内科医 適度に分割するのがいいと思う。
あんまりメモリもディスクもムダに使わないように。 あんまり詳しくないんだけど、commitするってことはトランザクション貼るんだよね?
トランザクション貼る必要があったら分割できないし、途中で別処理が乱入してきてデータ不整合になることがないってわかってるならそもそもトランザクション貼らないでinsertすれば良くない? >>128
>>129
>>130
コメントありがとうございます。
10万件が揃ってないと次の処理に行けないので、
全くわかってないんですけど、beginでロックして
トランザクションにして最後にcommitしてみます。
実行時にディスクやメモリをチェックしてみて
かなり消費しているようでしたら、1万件ずつとかで
commitしてみます。 処理に順番があるだけなら、外部でロックして、後続の処理を待たせることも考えたら。
10万レコードを1トランザクションでコミットしなければいけないことなんかそうそうないんじゃないかとも思うので。 >>132
これが普通だよな
不要なのにトランザクション使ってるだけならパフォーマンス落ちるだけですむけど、一万件でコミットして次のトランザクション入るまでに割り込まれたらマズいなら作りが悪い >>132
>>133
ありがとうございます。
実は大きな勘違いがありまして10万件はサンプルであって、
本番用は4000万件が29ファイルの12億件ぐらいあることがわかりました。
1ファイルの4000万件をMySQLに書き込んでみたら4000万件ちょっとで、
2時間かかりましたけど、14Gほどディスク容量を使ってしまって、
Cドライブの残り200Gには入りそうにないことがわかってきまして、
ちょっと呆然としてます。
どうしたらいいか、ちょっと落ち着いて考えてみます。 innodb_file_format = Barracuda
を指定して節約するとか
ま、そんな量じゃ小手先だろなw 4T位のHDDを4台使ったRAIDで増設しよう
今時1万くらいで買える >>135
>>136
ありがとうございます。
CドライブがSSDで速いのでいいかなと思っているのですけど、
外付けのハードディスクを使わざるを得ないと思っています。
そこで簡単に外付け(Eドライブ)に移動する方法ですけど、
一度、MySQLを停止しておいて、my.iniのdatadirを指定して、
そこに現在のCドライブのmysql\dataフォルダをコピーしてやって
再起動すれば、そのまま使えるのでしょうか? >>137
135だけど
Barracudaの指定後それだけでは駄目でテーブル定義に
ROW_FORMAT=COMPRESSEDを付け加えないといけないから、そこら辺はいろんな
サイトで確認してくれ
くれぐれも慎重に >>137
問題ない。
しかし、何億件て。w
しかるべき筋に業務として発注したほうがいいんじゃないか。
自前でやっていいのなら、そもそもその全レコードが必要なのかを考えるところからだろ。
サマリ処理ではいかんのかとか。 ■ このスレッドは過去ログ倉庫に格納されています