Community journal

The latest from the MySQL community

Ideas, releases, practical guides, and perspectives from the people building with MySQL.

Follow the feed
Showing entries 1201 to 1210 of 3187 « Previous | Next »
MySQLとMariaDBの仮想列(Percona Data Performance Blogより)

出典について

この記事はPercona Data Performance Blog内のStephane Combaudon氏によるVirtual columns in MySQL and MariaDB(2016/3/4)を翻訳したものです。

このブログ投稿では、MySQLとMariaDBの仮想列について比較しようと思います。

仮想列は私がMySQL 5.7で最も気に入っている機能の1つです。同じテーブルの1つあるいは複数の他のフィールド由来の値を新しいフィールドに保存できる機能です。関数インデックスを作成するには非常に良い方法です。この機能がMariaDBで利用できるようになってからしばらく経過しましたので、両者が同等のものなのか比較してみましょう。いくつかの観点でみていきましょう。

ドキュメント

…

[さらに読む]
MySQL 5.7の新機能 : パフォーマンススキーマのスケーラブルなメモリ割り当て(MySQL Server Blogより)

免責事項

この記事はMayank Prasad氏によるMySQL Server Blogの投稿「New in MySQL 5.7: Performance Schema scalable memory allocation」(2016/2/11)をユーザが翻訳したものであり、Oracle公式の文書ではありません。

パフォーマンススキーマは実行中のMySQLサーバーの実行時間の統計を収集しレポートする仕組みです。これらの統計は内部のメモリバッファーに保存され、またそこから取得されます。MySQL 5.6 …

[さらに読む]
MySQL = 5.7.11に乗り換えるだけでdefault_password_lifetimeの呪縛から逃れられる理由

見直したらほぼ 日々の覚書: MySQL 5.7.4で導入されたdefault_password_lifetimeがじわじわくる(MySQL 5.7.11でFIX!!) に書いてあったんだけど、

@yoku0825 @soudai1025 yumでさくっとバージョン上げた時に、=360のままだった気がしたので、そりゃ確かに勝手に設定値を書き換えたりしないよなと思ったのでした。(勝手に 既定コードを latin1 に書き換えられたら困るのと同じ)— 坂井 恵(SAKAI Kei) (@sakaik) 2016年3月6日

…

[さらに読む]
計算アイテムで単位時間あたりのログ件数をグラフ化する

単位時間あたりのログ件数をグラフ化する…という用途だと、Elasticsearch/Kibanaが思いつくのですが、Zabbixでも計算アイテムを使うことで、そういうことができなくもなかったです。

ログアイテムの設定

以下のような感じで、/var/log/messagesを監視するアイテムを作成します。

最新データは以下のような感じ。

計算アイテムの設定

ログの中から「error」にマッチする行の、30秒あたりの件数をカウントする計算アイテムを作成します。

基本的にはトリガー関数のcountがそのまま使えるようです。

違うのは、関数の第一引数が計算対象のアイテムのキーになるところです。(ちなみに、定義されていないアイテムのキーは使えないようでした)

…

[さらに読む]
ddを使って並列コピー

Amazon EC2でスナップショットから作成したばかりのEBSは読み書きが遅いので、ddを使って並列コピーするコマンドを作成してみた。

winebarrel/ddcp: Parallel file copy command using dd.

検証

スナップショットから作成したばかりのEBSからエフェメラルディスクにファイルをコピー

ファイルは25GBのidbファイル ファイルシステムはext4

インスタンスはi2.xlarge

EBSはgp2 1000GB(3000IOPS)

ddcp

ubuntu@ip-10-0-158-54:~$ time ddcp -s /mnt/vol2/mysql/wikimedia/page_view_statistics.ibd -d /mnt/vol/tmp/page_view_statistics.ibd

real 20m57.639s user 0m0.360s sys 0m48.133s

ハッシュは一致。

ubuntu@ip-10-0-158-54:~$ shasum /mnt/vol2/mysql/wikimedia/page_view_statistics.ibd /mnt/vol/tmp/page_view_statistics.ibd 08743bb15c2a92b153ae574d7ce16a6331bd0767 …

[さらに読む]
複数のテーブルのON UPDATE current_timestampなカラムの値を揃える方法を考える

タイトルで何を言ってるのか我ながら良くわからない。。


mysql56> SELECT * FROM t1 JOIN t2 USING(num);
+-----+-------+---------------------+---------------------+--------+---------------------+---------------------+
| num | val | created | updated | val | created | updated |
+-----+-------+---------------------+---------------------+--------+---------------------+---------------------+
| 1 | one | 2016-03-01 15:38:44 | 2016-03-01 15:38:44 | eins | 2016-03-01 15:38:44 | 2016-03-01 16:40:29 |
| 2 | two | 2016-03-01 15:38:44 | 2016-03-01 15:38:44 | zwei | 2016-03-01 15:38:44 | 2016-03-01 16:40:33 |
| 3 | three | 2016-03-01 15:38:44 | 2016-03-01 15:38:44 | drei | 2016-03-01 15:38:44 | 2016-03-01 16:40:36 |
| 4 | four | 2016-03-01 15:38:44 | 2016-03-01 15:38:44 | vier | 2016-03-01 15:38:44 | 2016-03-01 16:40:59 | …
[さらに読む]
Generated Columnの活用例

MySQL5.7から追加されたGenerated Column(生成列)を使って、色々と便利な事が出来るようになりました。
先日、Generated Columnを利用してMySQLの照合順を説明したのでその時に利用した生成列をサンプル兼メモです。

Default: utf8_general_ci or utf8mb4_general_ciの場合
英語の大文字、小文字は同じ文字として扱う。


root@localhost [CONFIRM]> show create table T_Character\G
*************************** 1. row ***************************
       Table: T_Character
Create Table: CREATE TABLE `T_Character` (
  `pid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `string1` char(1) DEFAULT NULL,
  `string2` char(1) DEFAULT NULL,
  `string1_w_string` char(4) GENERATED ALWAYS AS (hex(weight_string(`string1`))) VIRTUAL,
  `string2_w_string` char(4) GENERATED ALWAYS AS (hex(weight_string(`string2`))) VIRTUAL,
  `compare` char(1) GENERATED ALWAYS AS …
[さらに読む]
ORDER BY RAND()はしたくないけどそれなりにランダムな結果セットを返すいくつかの方法を考える

ORDER BY RAND()といえば、「結果セットをランダムにソートし、LIMITと組み合わせることでランダムに指定件数をピックアップしたかのように見える」黒魔術。

( ´-`).oO(そういえばこれも ORDER BY FIELD と一緒で構文だと思っていた人がいたな。。


これもまあRAND()関数を使ってるだけなので、select_listに放り込めば何やってるかわかりやすい。

mysql56> SELECT num, val, RAND() AS rand_val FROM t1 ORDER BY rand_val LIMIT 3;
+-------+----------------------------------+-------------------------+
| num | val | rand_val |
+-------+----------------------------------+-------------------------+
| 94164 | e8d2546088e6be7ff164964c7a07bdb3 | …
[さらに読む]
WHERE .. IN (..)のリストの順番でソートするORDER BY FIELDの仕組み

MySQLには`WHERE col IN (..) ORDER BY FILED(col, ..)`という書き方でINに並べた順番にソートしなおせるという知見がある。


こんなテーブルがあって、

mysql56> SELECT * FROM t1;
+-----+-------+
| num | val |
+-----+-------+
| 1 | one |
| 2 | two |
| 3 | three |
| 4 | four |
| 5 | five |
| 6 | six |
| 7 | seven |
| 8 | eight |
| 9 | nine |
| 10 | ten |
+-----+-------+
10 rows in set (0.00 sec)



INにテキトーな値を並べてやっても、

mysql56> SELECT * FROM t1 WHERE num IN (7, 5, 3);
+-----+-------+
| num | val |
+-----+-------+
| 3 | three |
| 5 | five |
| 7 | seven |
+-----+-------+
3 rows in set (0.00 sec)



…

[さらに読む]
フィードバック求む: SQLモードの強制(MySQL Server Blogより)

免責事項

この記事はTodd Farmer氏によるMySQL Server Blogの投稿「Feedback Request: Enforcing SQL Mode」(2016/2/9)をユーザが翻訳したものであり、Oracle公式の文書ではありません。

MySQLサーバーには多岐にわたるSQLモードがあります。SQLモードは様々な動作を制御するもので、制御する動作は他のRDBMSの方言(ANSI_QUOTES、PIPES_AS_CONCAT)との互換性から、セキュリティー( …

[さらに読む]