MySQL 総合 Part26 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
>>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
しかるべき筋に業務として発注したほうがいいんじゃないか。
自前でやっていいのなら、そもそもその全レコードが必要なのかを考えるところからだろ。
サマリ処理ではいかんのかとか。 >>138
>>139
ありがとうございます。
データを調べていたら、不必要なものが15%ぐらいあるようですし、
重複したデータがあって、それは件数さえわかればいいので、
countで件数数えてひとつにまとめます。
他のソフトの結果と連動して使うので、
サマリ処理だけでは済みそうにないんです。 それは理由としてまだあやしい。
ま、ここで正確に回答する必要なんかないんだけど。w
とにかく、そんなに簡単な案件ではなさそうなので、あきらめることもあわせてよーく考えるべき。
全レコードが記録されたデータファイルだけが目的なら別だけど、そうでなければ、時間をかけてつくったのにまともに検索できないデータベースができてしまう可能性も高い。
データ構造とかインデックスとかチューニングとか、いろいろあるからね。 >>141
ご指摘ありがとうございます。まさにそのとおりです。
まともに検索できるのかとか心配事は山ほどあります。
ただ、検索するときにはヒット件数が多くありませんので、
なんとかならないかなーと思っています。
とりあえず、やれるところまでやってみようと思います。 1Tの空きのあるEドライブにdataを移動して正常に起動できました。
最初、うまく起動できなかったのですけど、
フォルダのプロパティのnetwork serviceの
フルコントロール権限を与えないといけない、
というのをググって見つけて、そのとおりしたらうまくいきました! 昨日秋葉の99で4Tを買ってきたけど
1台8618円でした phpMyAdminにバックアップしていたデータベースをインポートしようとすると、
2006エラーで止まってしまいます。
こういう場合どうしたらインポート成功させられるんでしょうか?
MariaDB 5.5.56です。
SQLファイルは253MBあります。
max_allowed_packetが関係しているかなと思って、これを300Mに上げてみました。
それでもダメです。 スレ汚し失礼しました。
BigDump.phpでいけました。 128+256=384byteなはずなのになぜこのエラーが出るのでしょうか。
https://i.imgur.com/vqXsH4dl.jpg varchar(n) の n は文字数だったような気がする ありがとうございます。
回答をヒントに文字コードをasciiにしたらできました 様々な動物に皆で餌を上げます
同じ動物への餌は5分開けないと上げられません
動物に餌を上げるときに動物の種類、餌の種類、現在時刻をテーブルに登録します
この条件を満たすSQL文はどのように書けばいいのでしょうか?
現在は
SELECT time FROM animal WHERE ani=:ani AND esa=:esa AND DATE_ADD(time, INTERVAL 30 MINUTE) > CURRENT_TIMESTAMP() ORDER BY time DESC LIMIT 1
この文で実行してその結果でPHPの条件分岐で
INSERT INTO animal (ani,esa,time) VALUES (:ani,:esa,CURRENT_TIMESTAMP())
この文を実行するかどうか決めています
返り値は5分経ってない場合は残り時間が欲しいです 素直に最新のtimeだけとってきてPHPで条件分岐も計算もすればいいんじゃないの それだと複数のユーザが同じタイミングで餌を上げようとすると
両方が5分経ってると情報を渡し2人とも餌を上げられてしまいます そういうのはSQLじゃなく、
給餌システム側でセマフォのような仕組みを
作ってやらないと無理ではないか? あと最後の餌やりから30分以内のときだけtimeを取得する処理の必要性がわからん PDOなので自動でトランザクションが張られてると思います
ですがSELECT→INSERTの間のトランザクションは張られていないので駄目なのだと思います
$dbh->commit()も検討したのですが、結局SELECTでcommitしてトランザクションが切れてからINSERTするので意味がないと思います
すみません
30はコピペミスです
5でした select for update で終わり
トランザクション理解してなさげだからもう一回理解し直した方がいい 本当に聞きたかったことって動物の給餌作業の事じゃないんだろう PDOに関する無知だけ晒して礼も言わずに消える奴なんてもう相手にしなくて良いだろ
>>162
話の本筋じゃないからスルーしてたけどそうだよ お返事遅れてすみません
トランザクションについてもう一度理解し直そうと思います
回答ありがとございました (すんません、過疎ったスレに投稿したため回答がつかず、マルチお許しください。)
MySQL(に限らずなのかな?)で、null値を許可したnull値のカラムに、null値で更新をかけると、更新タイムスタンプが変更されてしまいますが、仕様ですか?
同カラムの値が1で、そのまま1で更新をかけた場合はタイムスタンプは更新されませんでした。 うろ覚えで済まんが、nullはどんな値とも一致しないので
nullで更新かけると結果としてレコードが更新されるんじゃないかな? >>168
なるほど、そういうことなんですね。
納得しました。ありがとうございました! >>167
暗黙のタイムスタンプとかあったっけ?
そのカラムを自分で更新してるんじゃないの? そもそもcurrent time_stamp設定してupdateクエリ通したら更新されるだろ --single-transaction
--lock-tables
両方指定したらどうなるのっと? >>174
MySQLスレで質問すると聞く前に試せって言われるパターン多いよなw それはここに限らないだろう
聞いてしまえばすぐ答えが来るかも知れないが
自分で試して何故そうなるかを考える方が得る物が多いし
そういうチャンスを奪うのはちょっとね
なさけは人のためならずって言うし >>176を意訳すると
「答えられない時は『自分でためせ』と言います」 ホントにどうでもいい質問もたしかにあるからな。
ま、しかたない。 どうでも良い質問=答えられない質問
良い質問=答えられる質問
だもんなw まったく調べもせず、やってもいない人間の相手をしていても、相手の知識がなさすぎて徒労に終わる。 >>180
おいおいおまえの人生自体がそもそも徒労だって事忘れんなよw 252 名前:NAME IS NULL[sage] 投稿日:2018/08/13(月) 18:38:14.55 ID:???
>>250
MariaDBがなかったら、もっと前に MySQLの寿命は尽きてたと思う。
Oracleとしては競合がなければ飼い殺しするつもりのMySQLに金をかけて無いと思う。
Sun買収自体が飼い殺しの意味でしかなかったと思うし。ホント、オープンソースの敵だな。 森次慶子 病気 ひき逃げ 在日朝鮮人 ツイッター芸人 韓国 罵倒 ADHD
発狂 5ちゃん荒らし マウント 前科 不倫 もりじ ロブスター ニート
不正利用 右翼 精神科 精神病 騒動 煽り運転 在日 逮捕歴 ストーカー
コンドーム おばさん 痴漢冤罪 炎上 脅迫罪 森次 左翼 差別主義者 躁鬱病
悪徳商法 レイシスト 詐欺 押し売り 傲慢 捏造 パワハラ 自演 ヘイトスピーチ
発症 引きこもり ゲームアプリ 森次慶子 万引き パクリ 著作権侵害 虚言癖
入院 捏造 解雇 自己愛性パーソナリティ障害 異常者 精神疾患 恐喝 覚醒剤
模写 トレース 加害者 強迫観念 ひかりの輪 発達障害 ドラッグ 猫虐待
執行猶予 オウム真理教 反日 胡散臭い ロブおば 大麻 画廊 高慢 芸人
勘違い 薬物 麻原彰晃 森○ 宗教 攻撃性 自己愛性人格障害 暴言 でっちあげ
事件 病状 双極性障害 アルノサージュ 差別 LGBT 暴力 中国 違法
醜悪 粘着質 無職 売れ残り 火病 無断転載 リンチ 暴行 狂人 懲役
不法侵入 DV 統合失調症 架空請求 盗作 心身症 人格障害 創価学会 炎上商法
2ch 作品 精神病棟 Moritsugu 起訴 森次慶子 下手 ぼったくり 幸福の科学 借金
詐欺師 底辺 精神異常 Keiko 性格悪い いじめ 悪辣 自己破産 コンプレックス
ババア F9 生活保護 横浜 引きこもり ウイルス フェミニスト 癇癪
変質者 反社会性パーソナリティ障害 恫喝 売春 人種差別 窃盗 高圧的
@W_Fei_hung
https://twitter.com/W_Fei_hung?s=09
http://peg.thebase.in/
https://togetter.com/li/1172468
https://togetter.com/li/1245978
http://b.hatena.ne.jp/entry/s/togetter.com/li/1172310
https://m.chiebukuro.yahoo.co.jp/detail/q14182486039
https://twitter.com/5chan_nel (5ch newer account) MySqlで、あるユーザーにCREATE TABLEやDROP TABLEの権限は与えたいが、CREATE DATABASEやDROP DATABASEの権限を与えたくない時はどうしたらいいのだろう? grant文で与えたい権限だけ与えれば良いのでは? grant create,delete on hoge.* to scott;
でhogeDBだけの権限になるかと deleleじゃないやdropだ
折れもわかってないわ
ねみぃ >>188
権限関連は、ちょっとSQLじゃない気がするな。 残念だが、
GRANT CREATE ON TEST_DB.* TO ‘TEST_USER’
とした場合は、TEST_USERは
DROP DATABASE TEST_DB
できるんだな。どうもMySqlの権限の設計はよくわからん。 いや、CREATE、DROP両方の権限をREVOKEしてもCREATE DATABASE、DROP DATABASEできてしまう。なんだコリャ?
お騒がせしました。 >>194
MySQLを動かしているユーザーで常時、使っているというオチじゃないだろうなw >>195
プロセスmysqldのUIDは、ユーザーmysqlのものだった。当然そんなアカウントでは使っていない。
マニュアルを引いてみたが、
1.なんでも、flush privilegesというコマンドかある。
2.CREATE権限は、DATABASEとTABLEに分けられない。TABLEを作る権限のある者は、DATABASEを作る権限もある、DROPも然り。
なんかDATABASEに対する考え方がアレだが、これではあんまりだが、それを補うかのように、CREATE TEMPORARY TABLEなる権限があるので、それでなんとかならんか検討してみる。 flush privilegesは、権限関連コマンドを使わずに、テーブルを直接編集したときに内容をサーバーに反映させるんじゃなかったっけ? ■ このスレッドは過去ログ倉庫に格納されています