私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ【この先一体】MySQL 総合 Part15【どうなるの】

みんなの評価 : ○
レスフィルター : (試験中)
つまり、そのデータをいじったり、保管したりするには、メモリ及びディスク上に、INTであれば、(非圧縮で)4×n byte分のスペースが必要になるってことだ。
>>350
>本来どう指定するのが正しいのでしょうか?
最終的に何を実現したいのかな?
INT(4) は、表示する時に最低 4 桁出力するという意味です。
指定しているのは表示する桁数であって、格納するデータのサイズ
ではありません。格納するデータのサイズを指定したい場合は、
そのサイズに合わせて TINYINT, SMALLINT, MEDIUMINT, INT,
BIGINT を使い分けます。BIGINT を使うと 8bytes までの数字を
扱うことが出来ます。
http://dev.mysql.com/doc/refman/5.1/ja/numeric-types.html
>本来どう指定するのが正しいのでしょうか?
最終的に何を実現したいのかな?
INT(4) は、表示する時に最低 4 桁出力するという意味です。
指定しているのは表示する桁数であって、格納するデータのサイズ
ではありません。格納するデータのサイズを指定したい場合は、
そのサイズに合わせて TINYINT, SMALLINT, MEDIUMINT, INT,
BIGINT を使い分けます。BIGINT を使うと 8bytes までの数字を
扱うことが出来ます。
http://dev.mysql.com/doc/refman/5.1/ja/numeric-types.html
サーバに多数のコネクションを張ってupdateかけるデーモン書いたら
lock wait timeout exceededって怒られるようになりました。
ググったら
"他のスレッドが保持しているロックをinnodb_lock_wait_timeout秒間待っても獲得出来なかった場合に発生する。 "
と出てきました。
ここの"スレッドが保持しているロック"というのを調べる方法はないでしょうか?
webサービスなので今のところタイムアウトの秒数を増やすといった解決方法は考えていません。
また、もし似たような場面に遭遇したといったことがあればヒントをいただけませんか?
対象となるテーブルはInnoDB、テーブルのロックは見たところ無いように見えてしまっています。
lock wait timeout exceededって怒られるようになりました。
ググったら
"他のスレッドが保持しているロックをinnodb_lock_wait_timeout秒間待っても獲得出来なかった場合に発生する。 "
と出てきました。
ここの"スレッドが保持しているロック"というのを調べる方法はないでしょうか?
webサービスなので今のところタイムアウトの秒数を増やすといった解決方法は考えていません。
また、もし似たような場面に遭遇したといったことがあればヒントをいただけませんか?
対象となるテーブルはInnoDB、テーブルのロックは見たところ無いように見えてしまっています。
show engine innodb statusで、待たされている様子はわかる
誰がどのロックをつかんでいるかは
MySQL 5.1+InnoDB Pluginを入れるとわかる
かなり難しいけどね
誰がどのロックをつかんでいるかは
MySQL 5.1+InnoDB Pluginを入れるとわかる
かなり難しいけどね
WinXPにApacheとMySQL5.1.35を入れてphpMyAdmin起動して、
テーブル作成するため参考書CDに入ってたダンプと思われるtxtインポートしたら
--で始まるコメントの行がSyntax Errorになりますた。
試行錯誤の末、コメント行を全部消して食わせたらちゃんと食ってくれました。
最近のバージョンではコメントの書き方が変わってたりするんでしょうか?
テーブル作成するため参考書CDに入ってたダンプと思われるtxtインポートしたら
--で始まるコメントの行がSyntax Errorになりますた。
試行錯誤の末、コメント行を全部消して食わせたらちゃんと食ってくれました。
最近のバージョンではコメントの書き方が変わってたりするんでしょうか?
追記
--のコメント行が全部エラーになっているのではないようで、
一行だけ
------------------------------------------
みたいになっている行があって、その行を消すとインポートできました。
そういう行があるとエラーになるようになったのでしょうか?
--のコメント行が全部エラーになっているのではないようで、
一行だけ
------------------------------------------
みたいになっている行があって、その行を消すとインポートできました。
そういう行があるとエラーになるようになったのでしょうか?
select id,name from hoge where name='two'
union all
select id,name from moge where name='two'
union all
select id,name from moge where name='two'
>>368
wow わざわざすんません。右も左もわかってませんのでいろいろ漁って勉強させてもらいます!
ちなみに先の問題はレプリケーションの遊びしてた鯖でロックするようなselect出させるようにしてひとまず回避しました。
wow わざわざすんません。右も左もわかってませんのでいろいろ漁って勉強させてもらいます!
ちなみに先の問題はレプリケーションの遊びしてた鯖でロックするようなselect出させるようにしてひとまず回避しました。
中カテゴリ、小カテゴリの一覧が入ったテーブルがあります。
ここから、中カテゴリが変わるまでitemのみを出すSQLを作りたいのですが、
PHPやPerlの中であえて行わずにMySQL用のクエリだけで実現できるのでしょうか?
識者の方、教えて頂けますと幸いです。
テーブル例)
|category|item|(列名)
|果物|りんご|
|果物|スイカ|
|動物|うし|
|草花|あじさい|
|草花|つばき|
|草花|ひまわり|
出力例)
・果物
りんご
スイカ
・動物
うし
・草花
あじさい
つばき
ひまわり
ここから、中カテゴリが変わるまでitemのみを出すSQLを作りたいのですが、
PHPやPerlの中であえて行わずにMySQL用のクエリだけで実現できるのでしょうか?
識者の方、教えて頂けますと幸いです。
テーブル例)
|category|item|(列名)
|果物|りんご|
|果物|スイカ|
|動物|うし|
|草花|あじさい|
|草花|つばき|
|草花|ひまわり|
出力例)
・果物
りんご
スイカ
・動物
うし
・草花
あじさい
つばき
ひまわり
mysql> set @job = '';
Query OK, 0 rows affected (0.00 sec)
mysql> select concat(if (@job = job, '', @job := job), ',', ename) from emp orde
r by job, ename;
+------------------------------------------------------+
| concat(if (@job = job, '', @job := job), ',', ename) |
+------------------------------------------------------+
| analyst,ford |
| ,scott |
| clerk,adams |
| ,james |
| ,miller |
| ,smith |
| manager,blake |
| ,clark |
| ,jones |
| president,king |
| salesman,allen |
| ,martin |
| ,turner |
| ,ward |
+------------------------------------------------------+
14 rows in set (0.00 sec)
PHPやPerlでやったほうがいいと思います!
Query OK, 0 rows affected (0.00 sec)
mysql> select concat(if (@job = job, '', @job := job), ',', ename) from emp orde
r by job, ename;
+------------------------------------------------------+
| concat(if (@job = job, '', @job := job), ',', ename) |
+------------------------------------------------------+
| analyst,ford |
| ,scott |
| clerk,adams |
| ,james |
| ,miller |
| ,smith |
| manager,blake |
| ,clark |
| ,jones |
| president,king |
| salesman,allen |
| ,martin |
| ,turner |
| ,ward |
+------------------------------------------------------+
14 rows in set (0.00 sec)
PHPやPerlでやったほうがいいと思います!
>>370
1つのselectにするなら全テーブルが同じカラム構成じゃないといけない。
で、あらかじめテーブル一覧がわかってたらビューを作ればできるかも
create view v as
select * from t1
union
select * from t2
…
1つのselectにするなら全テーブルが同じカラム構成じゃないといけない。
で、あらかじめテーブル一覧がわかってたらビューを作ればできるかも
create view v as
select * from t1
union
select * from t2
…
で、mySQLで掲示板作るとローパフォーマンスだとか主張していたヴァカはどうした?
最近MySQLを触り始めたばかりの初心者です。
mysqlimportを使ってDBのバックアップとデータ移行を行いたいと思います。
マニュアルによればタブ区切りテキストを読み込むことができるそうですが、
このmysqlimportで読み込める形式を出力するには、どのような方法が簡単でしょうか?
とりあえず、自分が試したのは以下の通りです。
(1) mysqldump --no-data でテーブル構造をテキストに出力
(2) テーブル構造を移行先DBに読み込ませる
(3) mysql -D database_name -B -N -e 'SELECT * FROM table_name;' でTSVテキストを出力
(4) mysqlimportでTSVを読み込み
しかしこの方法では、
(4)の際に一部レコード(1万件以上)がスキップされるなど、上手くいきませんでした。
なお、元のDBはMySQL3.23、移行先のDBは5.0です。
mysqlimportを使ってDBのバックアップとデータ移行を行いたいと思います。
マニュアルによればタブ区切りテキストを読み込むことができるそうですが、
このmysqlimportで読み込める形式を出力するには、どのような方法が簡単でしょうか?
とりあえず、自分が試したのは以下の通りです。
(1) mysqldump --no-data でテーブル構造をテキストに出力
(2) テーブル構造を移行先DBに読み込ませる
(3) mysql -D database_name -B -N -e 'SELECT * FROM table_name;' でTSVテキストを出力
(4) mysqlimportでTSVを読み込み
しかしこの方法では、
(4)の際に一部レコード(1万件以上)がスキップされるなど、上手くいきませんでした。
なお、元のDBはMySQL3.23、移行先のDBは5.0です。
>>377
それはダメだ。
それはダメだ。
>>377
dump時に出力後の文字コードを指定できる。
そのdumpした物をそのまま新しいDBに入れればいいだけ。
文字コードがおかしいから文法エラーになってるものだと思われるので
文字コードが正しければ解決。
dump時に出力後の文字コードを指定できる。
そのdumpした物をそのまま新しいDBに入れればいいだけ。
文字コードがおかしいから文法エラーになってるものだと思われるので
文字コードが正しければ解決。
非力なポストグレが終わりそうなのでmysqlへ移行を考えています。
SQL文の違いはあまりなくすぐに移行できるでしょうか?
SQL文の違いはあまりなくすぐに移行できるでしょうか?
ポスグレ終わりなん?
MySQLの勉強が終わったらポスグレを勉強しようと思ってたのに…
移行する時の注意ですが、MySQLもそれなりに個性の強いRDBMSだと思います。
SQL モードやストレージエンジンの違いは注意が必要だと思います。
ドキュメントもそこそこありますし、見通しは良いので、別の RDBMS を
使っていた経験があるなら、そんなに難しい事は無いと思います。
MySQLの勉強が終わったらポスグレを勉強しようと思ってたのに…
移行する時の注意ですが、MySQLもそれなりに個性の強いRDBMSだと思います。
SQL モードやストレージエンジンの違いは注意が必要だと思います。
ドキュメントもそこそこありますし、見通しは良いので、別の RDBMS を
使っていた経験があるなら、そんなに難しい事は無いと思います。
いま面倒みているシステムでPostgreSQLの調子が悪いって話じゃないの?
PostgreSQL自体はもうすぐ8.4も出るし、いたって堅調。
SQLの文法はかなり違うからすぐには移行できないよ。
PostgreSQL自体はもうすぐ8.4も出るし、いたって堅調。
SQLの文法はかなり違うからすぐには移行できないよ。
システム移行の話ですか。それなら大変ですね…
ストアドとかサブクエリーとかバックアップとか
いろいろ悩ましいでしょうね。
ストアドとかサブクエリーとかバックアップとか
いろいろ悩ましいでしょうね。
最終的には実測してくれとしか言えないが
データを受け取ったプログラム側で調整することも視野に入れてみてはどうか。
ランダムで全レコードの中から1つだけ抽出する…という処理なら、
先にランダムな値を決めておいて、
SELECT * FROM table_name WHERE id = $random_id ;
みたいな感じにするとか。
データを受け取ったプログラム側で調整することも視野に入れてみてはどうか。
ランダムで全レコードの中から1つだけ抽出する…という処理なら、
先にランダムな値を決めておいて、
SELECT * FROM table_name WHERE id = $random_id ;
みたいな感じにするとか。
MySQLをアクセスできる状態のままdumpすることはできるのでしょうか?
サーバを2台用意できないのでレプリケーションはできません
稼働したままバックアップ取るなら最低でもロックをして、
一時的にでもリードできないようにする必要はありますか?
サーバを2台用意できないのでレプリケーションはできません
稼働したままバックアップ取るなら最低でもロックをして、
一時的にでもリードできないようにする必要はありますか?
>>397
>MySQLをアクセスできる状態のままdumpすることはできるのでしょうか?
出来るけど、お金を掛けずに整合性を保ってダンプしたいなら
ロックをする必要があります。
お金があるなら InnoDB Hot Backup を使うという手も。
>サーバを2台用意できないのでレプリケーションはできません
レプリケーションはサーバ一台でも出来る筈。
マスターとスレーブでポートを分ければ良いだけじゃない?
>稼働したままバックアップ取るなら最低でもロックをして、
>一時的にでもリードできないようにする必要はありますか?
InnoDB みたいなクラッシュリカバリを備えているストレージ
エンジンならディスクの側でスナップショットを取るという
方法もあります。これは使っている OS やストレージに依ります。
間違えてたらごめんね。
>MySQLをアクセスできる状態のままdumpすることはできるのでしょうか?
出来るけど、お金を掛けずに整合性を保ってダンプしたいなら
ロックをする必要があります。
お金があるなら InnoDB Hot Backup を使うという手も。
>サーバを2台用意できないのでレプリケーションはできません
レプリケーションはサーバ一台でも出来る筈。
マスターとスレーブでポートを分ければ良いだけじゃない?
>稼働したままバックアップ取るなら最低でもロックをして、
>一時的にでもリードできないようにする必要はありますか?
InnoDB みたいなクラッシュリカバリを備えているストレージ
エンジンならディスクの側でスナップショットを取るという
方法もあります。これは使っている OS やストレージに依ります。
間違えてたらごめんね。
InnoDBしかつかってないシステムなら
mysqldump --single-transactionで
オンラインバックアップ取れる
mysqldump --single-transactionで
オンラインバックアップ取れる



類似してるかもしれないスレッド
- 【MySQL】下らねぇ質問はID出して書き込みやがれ 2 (985) - [21%] - 2012/10/17 7:16
- 【】 MySQLを買収したSunを買収したOracleを 【】 (112) - [19%] - 2023/1/22 14:15
トップメニューへ / →のくす牧場書庫について