「竈門禰󠄀豆子」を MySQL に保存できるとかできないとかいう話題を見て、そう言えば MySQL の Grapheme Cluster 対応ってどうなってるんだっけ…と思ってググってみたら、MySQL 8.0.28 のリリースノートにこんな文を見つけた。 International Components for Unicode version 67 introduced a new implementation for \X (match a grapheme cluster), which requires locale data not currently included with MySQL. This means that, when using the version of ICU bundled with MySQL, a query using \X raises th
皆さんは、find_in_setという関数をご存知でしょうか?MySQLの固有の関数のためあまり馴染みが無いかもしれませんが、ものすごく刺さるときは刺さるという関数になります。 今回は、知らなくてもなんとかなるけど、知っておくとちょっと便利なfind_in_set関数を紹介していきたいと思います。 検証環境 今回はDockerで建てたMySQLを使用します。以下のコマンドでDockerを建てて、ローカルからアクセスをします。 % docker run --platform linux/x86_64 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest % % mysql -uroot -pmy-secret-pw 執筆時点では、以下の通りMySQL 8.0.28を使用しています。 mysql> select ver
読者対象 ある程度データベースに関する知識を持っている,経験年数 1 年以上のバックエンドエンジニア 特定のプログラミング言語に依存する部分は含めないため,すべての SQL 使用者を対象とする また,ゼロからの丁寧な説明というよりは,リファレンス感覚で使える記事という形にまとめる。 RDBMS の対象バージョン PostgreSQL: 9.4 以降 MySQL: 8.0.28 以降 id (データ型と INSERT 時のデフォルト埋め) 導入 一般的に採用されやすいプライマリキー用の値として,以下を考える。 連番整数 MySQL では AUTO_INCREMENT, Postgres では IDENTITY や SERIAL と呼ばれるもの UUID v1: ハードウェアごとにユニークな単調増加値 UUID v4: ランダム値 UUID v7(ドラフト): 単調増加であるタイムスタンプとラ
よく見るDB接続例 Go言語を用いてmysqlに接続する際、DBの情報を文字列で直書きしているケースを良くみる import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func main(){ db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/db?charset=utf8&parseTime=true") // 以下省略 } import ( "database/sql" "time" "github.com/go-sql-driver/mysql" ) func connectDB() *sql.DB { jst, err := time.LoadLocation("Asia/Tokyo") if err != nil { // エラーハンドリ
このエントリーは MySQL Advent Calendar 2020 の 12/7 のエントリーです。 照合順序(COLLATION)とは 照合順序は文字列の比較やソート順のルールのことです。各キャラクタセットごとに照合順序が定義されています。 -- SHOW COLLATIONS で一覧が見れる mysql> SHOW COLLATIONS; +----------------------------+----------+-----+---------+----------+---------+---------------+ | Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute | +----------------------------+----------+-----+-------
最近では、開発に使うMySQLやPostgresなどのデータベースもDocker上に用意するのが普通だと思います。 他方、Rails+MySQLの開発環境をMacで構築しようとすると大抵トラブるのですが、そこでの解決方法として、MySQL本体を直接インストールする事を提示している例が多いです。 私も過去にはあまり考えずやっちゃってましたが、新しいMacBookに移行するのを機に心を入れ替えました。使わないものはビタ一つ入れたくない。 という訳でここではMac&Docker使用を前提として、クライアントのインストールだけで済ます手順を紹介します。 (そもそも)gem mysql2って何? Railsの開発ではすっかりお馴染みのgem mysql2。環境構築の際に必ずトラブるやつですね。あとOSのUpgradeした時とか。 公式サイトによると This gem links against My
株式会社ラクーンホールディングスのエンジニア/デザイナーから技術情報をはじめ、世の中のためになることや社内のことなどを発信してます。 bashパフォーマンスMySQLInnoDBDB設計インデックス こんにちは、羽山です。 今回は MySQL のプライマリキーに UUID を採用する場合に起きるパフォーマンスの問題を仕組みから解説します。 MySQL(InnoDB) & UUID のパフォーマンスについては各所でさんざん議論・検証されていますが、論理的に解説した記事が少なかったり一部には誤解を招くようなものもあるため、しっかりと理由から理解するための情報として役立つことができればと思っています。 UUID と比較される古き良き昇順/降順のプライマリキーはというと、 MySQL の InnoDB において良いパフォーマンスを出すために縁の下の力持ちのような働きをしてくれているケースが実は少な
こんにちわ。せじまです。今回は地味で泥臭い話をします。ただ、割と平易な内容かと思いますので、初学者の方にもオススメです。 はじめに ゲームでは、受取期限のついたログインボーナス的なものがよくあります。ユーザが期限までに受け取らないと、ユーザからそのデータは不可視になりますが、必ずしも、不可視になった瞬間にデータベースから直ちに削除される、というわけでもありません。バッチジョブか何かで、ガベージコレクションのように削除するケースが多いのではないでしょうか。 また、論理削除という概念もあります。論理削除についてはいろいろ意見や考え方があるかと思いますので、ここでそれについては論じませんが、「削除フラグが立ってユーザから不可視になった後、三ヶ月以上経過したデータを削除したい」みたいなことは、ゲームに限らず、しばしばあるんじゃないかなと思います。 こういった、ユーザから不可視になってしばらく経過し
MySQLではcharacter set(以後、charset)やcollationをグローバル、データベース、テーブルやカラムレベルで設定することができます。今回はMySQLのデフォルトcollationの注意点を紹介したいと思います。使用するMySQLのバージョンは8.0.26です。 charsetやcollationとはなにかについては説明はしません。よって、charsetやcollationについてご存知ない方は、先にマニュアル「第10章 文字セット、照合順序、Unicode」をご確認ください。 charsetやcollationの各レベルの設定方法 グローバル 以下のシステム変数を設定します。 character_set_server… サーバーのデフォルトのcharset collation_server… サーバーのデフォルトのcollation データベース CREATE
この記事を簡単に整理すると 新規開発で使っていた環境が動かなくなった(´・ω・`) 現在副業で刺さっている現場で、Rails使った新規プロダクト開発をやっています。 そこではDocker使って環境を構築しています。実運用環境ではAmazon RDSを使うため、MySQLのバージョンも合わせて8.0.20で構築しています。 これまで私はWindows上のWSLで開発を進めてきましたが、タイトルどおり某PCが発売されてしまった訳です。もともとチームでは私だけLinux(WSL)、他の人Macでの開発をしていたため、2通りの環境で動くように整備をしていました。ただ、最近その差分を吸収するのが手間になってました。となんやかんやしているうちにM1 Macで、DeveloperビルドではありますがDockerが動くようになったため、購入したわけです。 事前に環境設定して、一通りDockerコマンドの動
LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog LINEで働くエンジニアに色々と話を聞いていく「LINE Engineer Insights」。LINEの技術組織で働く人々に、何を重視して技術者としてのキャリアを歩んでいるのか、今LINEで何に取り組んでいるのか、今後実現していきたいことなどを聞いていきます。 今回登場するのは、MySQLエキスパートとして広く名を知られる田中翼(@yoku0825) 。日本人として3人目のMySQL分野のOracle ACEであり、2015年には「default_password_lifetime」の功績でMySQL 5.7 Community Contributor Awardに選出された田中は、2021年6月よりLINEのITSC DB
第149回 MySQLのパスワード再利用ポリシーでは、MySQL 8.0に追加されたパスワードの再利用についての設定について説明しました。今回もMySQL 8.0で追加されたパスワード周りの機能として、バージョン8.0.13で追加されたパスワード検証必須ポリシーと、バージョン8.0.19で追加された、ログイン失敗時のアカウントの一時ロックについて説明します。なお、今回利用するMySQLはバージョン8.0.23、OSはCentOS 7を利用しています。 パスワード検証必須ポリシー(Password Verification-Required Policy)とは パスワード検証必須ポリシーとは、パスワードを変更する際に現在のパスワードを要求するオプションになります。デフォルトはOFFになっており、my.cnfにpassword_require_currentを記述するか、SET (GLOBAL
ローカルでMySQLを使う時の選択肢だったMySQL-Sandboxがdeprecatedになっており、代替としてピックアップされていたdbdeployerを試してみました。 便利に使っていたものも、気がつくと主流ではなくなっていたというのはありがちです。brew doctorを実行したところ、以下の表示がでてきました。 Warning: Some installed formulae are deprecated or disabled. You should find replacements for the following formulae: mysql-sandbox mysql-sandboxは様々なバージョンのMySQLサーバをお手軽にローカル上に建てたり、データが破損しても簡単に入れ直せるため、前職以前はローカル環境でMySQLを扱うロジックの検証が非常に快適になったライ
MySQLは、バージョン8になってパスワード管理周りにもいくつか機能が追加されています。第90回 デュアルパスワード機能でパスワードを便利に変更する:MySQL道普請便りで紹介した機能もその1つです。今回はMySQL 8.0.3で追加されたパスワード再利用ポリシー機能について説明します。 なお、今回利用するMySQLはバージョン8.0.23、OSはCentOS 7を利用しています。また、default_authentication_plugin = mysql_native_passwordで検証していきます。 パスワード再利用ポリシーとは パスワード再利用ポリシーでは、以前使用したパスワードをどのように扱うかを決めます。 これまでのMySQLでは、一度使用したアカウントのパスワードは特に制限なく再利用することが可能で、昔からある秘伝のパスワードを使いまわしていた方もいたかもしれません。パ
前置き ・パラメータ名がハイフン表記か、アンダースコア表記か常に意識しておく必要有 ・初めてMySQLを起動する前に設定すべき 後でも直せなくはないが、苦行 また、mysql/performance/sysスキーマをalter文で変更するの怖い(一部放置している…) 前提 ・MySQL5.7/8.0におけるmy.cnf(Linux)/パラメータグループ(AmazonRDS)での設定を考慮 ・文字コードはutf8mb4、照合順序はutf8mb4_general_ciに設定 ・データベースのことをスキーマ、MySQLサーバーのプロセス全体をサーバーと記述する 文字コード 1.文字コードとは ・みんな大好き文字コードのため割愛 ・MySQL5.7も8.0もutf8mb4が無難 (cp932で保管しないといけないシステムもあるであろうが…) 2.文字コードに関するパラメータ 2.1.charact
Amazon Web Services ブログ Amazon RDS for MySQLでMySQLエンジンバージョンを5.5から5.7へアップグレードする方法 Amazon Web Servicesでは、フルマネージド型のリレーショナルデータベースサービスとして、Amazon Relational Database Service (Amazon RDS) および Amazon Aurora を提供しています。Amazon RDS for MySQLを利用することで、AWSクラウド上でMySQLを容易にデプロイし、運用管理を行うことができるようになります。 Amazon RDSでは、定期的にメジャーまたはマイナーエンジンバージョンの廃止を行います。メジャーバージョンについては、コミュニティ版の対象バージョンがEOLを迎え、ソフトウェアの修正やセキュリティアップデートが行われなくなった場合
新しいバージョンのデータベースエンジンが Amazon RDS でサポートされている場合は、DB インスタンスをその新しいバージョンにアップグレードできます。MySQL データベースのアップグレードには、メジャーバージョンのアップグレードとマイナーバージョンのアップグレードの 2 種類があります。 メジャーバージョンのアップグレード メジャーバージョンのアップグレードには、既存のアプリケーションとの下位互換性のないデータベースの変更が含まれる場合があります。そのため、DB インスタンスのメジャーバージョンアップグレードは手動で実行する必要があります。メジャーバージョンアップグレードをスタートするには、DB インスタンスを変更します。メジャーバージョンのアップグレードを行う前に、「MySQL のメジャーバージョンのアップグレード」の手順を実行することをお勧めします。 マルチ AZ DB イン
動機 株式会社iRidgeサーバーサイドエンジニアをやっています。lighttger2505です。 Vim以外の内容を書くのは久しぶりです。 さて弊社ではメインのDBとしてMySQLを使用しています。私は入社してから幾度なくDBにアクセスしてきましたが、 少し前の私には大きな不満がありました。 DBがローカルであればmysqlコマンド一発でアクセスできるのですが、 AWS RDS上に立っているDBサーバにアクセスするには踏み台サーバにssh後、mysqlコマンドを実行したり.. 踏み台サーバーにssh後、更にwebアプリケーションサーバにssh後、mysqlコマンドを実行したり... めんどくさいですね。 以下のように様々なめんどくささがあります DBサーバが遠くなればなるほどに、手間がかかる mysqldumpコマンド等でダンプ取るとかdumpファイルでリストアしたりとか、いちいちscp
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く