2つのカラムA, Bがあり、Bにはない値だけをAから抽出したい場合、RDBなら EXCEPT で直感的に、あるいは NOT EXISTS などでできるが、Excelでやるとなると?
(さらに…)タグ: MySQL
-
ibdata1肥大化解消
学認連携Moodleのibdata1は11GBになっている。よく言われることだが、InnoDBはOSがどのていどのファイルを扱えるか認識できない。肥大化が困るのは、ファイルシステムを食い潰すことであり、最適化したとしても縮小することはない。一度ダンプからリストアするしかない。また、ファイルごとに.idbを作成する「innodb_file_per_table」が効果があるとされており、my.cnfに
[code]
innodb_data_file_path = ibdata1:1G
innodb_file_per_table
[/code]を記述するという2009年の記事が見られるが、MySQLマニュアルを見ると、MySQL 5.6からこれがデフォルトになるそうだ。つまり、自動的にテーブルごとの.ibdを作成してくれるということである。先日のシステムメンテナンスで学認連携MoodleはMySQL 5.7にバージョンアップした。学認連携Moodleのデータディレクトリを見てみると、
[code]
-rw-r—– 1 mysql mysql 8720 3月 8 04:19 mdl_workshop_aggregations.frm
-rw-r—– 1 mysql mysql 147456 3月 8 04:20 mdl_workshop_aggregations.ibd
-rw-r—– 1 mysql mysql 9260 3月 8 04:19 mdl_workshop_assessments.frm
-rw-r—– 1 mysql mysql 147456 3月 8 04:20 mdl_workshop_assessments.ibd
-rw-r—– 1 mysql mysql 9222 3月 8 04:19 mdl_workshop_assessments_old.frm
-rw-r—– 1 mysql mysql 163840 3月 8 04:20 mdl_workshop_assessments_old.ibd
[/code]のように、ダンプをリストアする作業を行っていないのもかかわらず、夜中のmysqlcheck時に自動的にこのようになっているようだ。つまりmy.cnfは一切変更する必要はない。
「innodb_data_file_path = ibdata1:1G」について、このサイズを越えたらどうなるのか見当がつかないので、明示的な固定サイズは止めることにした。しかしながら今のままの肥大を続けるのは良くないので、データベースのダンプをリストアする作業は必要である。この結果、ibdata1は11Gから79Mとなり、消費メモリが劇的に減少した。
-
RHEL Server 5.9 で PHP 5.4.11 & MySQL 5.5.29 (remi リポジトリ) を使う
必要があり研究室のWebサーバのPHPとMySQLを更新することに。
基本は remi リポジトリを一時的に有効にして yum –enablerepo=remi,epel –disableexclude=php install php* mysql* で良いはずだがここと同じエラーでハマった。i386 のパッケージを削除して解決。ところが、このWebが表示されないという問題が発生した。試しに、コマンドでパースできるか試すとエラー。該当のプラグインを削除して解決した。
[code][uep@hosts02b uep]$ php index.php
PHP Fatal error: Call-time pass-by-reference has been removed in /var/www/uep/wp-content/plugins/photo-dropper/application/core/Utility.php on line 69
[/code]
