タグ

tom__boのブックマーク (2,286)

  • ダイレクトI/O用のキャッシュ実装 - 豪鬼メモ

    ハードウェアと直接お話するダイレクトI/Oが遅いのは仕方ないことだが、アプリケーション層で小さなキャッシュ機構を使うと大分マシになるという話。 ファイルシステムのキャッシュを回避して、システムのメモリ空間を消費せずに入出力を行うのがダイレクトI/Oである。前回も述べたが、ダイレクトI/Oは宿命的に遅い。遅いながらも、アクセスパターンに局所性がまったくない場合は、システム全体にかける負荷を軽減できるので、有用である。今回は、前回述べたダイレクトI/Oを隠蔽するファイルクラスにキャシュ機構を導入して高速化を図る。 システム層のキャッシュを回避しておきながら自前のキャッシュを導入して高速化を唄うようなマッチポンプ行為に意味があるのか。微妙なところだが、特定のケースでは、ある。アクセスパターンに局所性がない場合にダイレクトI/Oを使うと述べたが、局所性のないアクセスパターンと局所性のあるアクセスパ

    ダイレクトI/O用のキャッシュ実装 - 豪鬼メモ
  • I/Oのバッチ化によるDBの性能改善 - 豪鬼メモ

    前回までの一連の実験で、ダイレクトI/Oを使ってデータベースを運用する際の性能特性が見えてきた。そこで洗い出された課題を解決し、おそらくは最善の効率に到達した。性能評価の結果としては、ダイレクトI/Oを使ったデータベースの性能を、書き込みが9.3倍、読み込みが6.3倍も高速化することが確かめられた。まるで某コンピュータメーカーの広告のようではないか。Tkrzw-0.9.20から有効なので、ぜひお手元でお試しいただきたい。 一定の単位にアラインメントされたオフセットおよびサイズを持つページを単位としたキャッシュがページキャッシュである。ダイレクトI/Oを前提とする場合、ページのアラインメントは下層のデバイスのブロックサイズと同じかその倍数である必要がある。 上の図を見ていただこう。ブロックサイズが512として、400バイトのオフセットから300バイトを書き込むとしよう。その場合、0バイトで始

    I/Oのバッチ化によるDBの性能改善 - 豪鬼メモ
  • チョットワカル Row-Based Replication・その5 | GREE Engineering

    こんにちわ。せじまです。 今回も replication の話をします。 はじめに 第5回です。 今回は TABLE_MAP_EVENT に関する話をします。 MySQL Internal Manual ではこちらになります。 14.10.1 TABLE_MAP_EVENT 解説 TABLE_MAP_EVENT には、更新対象の database_name.table_name と、更新対象の columnの型 の情報が保存されています。また、型の compatibility check や replicate-do-db などのチェックをするのに使われています。 では早速ソースコードを読んでいきましょう。 SQL Thread で handle_slave_sql() から降りてきます。 https://github.com/mysql/mysql-server/blob/mysql-8

    チョットワカル Row-Based Replication・その5 | GREE Engineering
    tom__bo
    tom__bo 2019/11/27
  • チョットワカル Row-Based Replication・その4 | GREE Engineering

    こんにちわ。せじまです。 今回も replication の話をします。 はじめに 第四回です。 前回、 Row-Based Replication では Column の名前を意識していないことを確認しました。今回は Row-Based Replication で online schema change できないか、そのへん試してみましょう。 まずは厳重注意 これから記述する内容を番環境で実施する場合、リスクをともないます。まずは検証環境で試しましょう。 いちおうまとめ master の方が Column が少なかった場合、 slave にしか存在していない Column の振る舞いは、 Worklog 5092 で規定されているようなものでした。デフォルトの値で更新されます。 よって、 slave でtableの末尾に add column する程度なら動く気がします。公式ドキュメ

    チョットワカル Row-Based Replication・その4 | GREE Engineering
    tom__bo
    tom__bo 2019/11/21
  • チョットワカル Row-Based Replication・その3 | GREE Engineering

    こんにちわ。せじまです。 引き続き replication の話をします。 はじめに 第三回です。 前回は THD::decide_logging_format() を通じて、 binlog_format=ROW についてぼちぼち学びました。今回は binlog_row_image に関する話を踏まえつつ、ちょっと応用編っぽい話もします。 解説 binlog_format=ROW についてさらに学ぶべく、まずはMySQL Internals Manualを読んでみましょう。 ただ、 MySQL Internals Manual / The Binary Log / Event Data for Specific Event Types をみると Write_rows_log_event/WRITE_ROWS_EVENT には次のように書いてあります。 [TODO: following ne

    チョットワカル Row-Based Replication・その3 | GREE Engineering
    tom__bo
    tom__bo 2019/11/18
    単体のMySQL-serverにたいして制限付きでbinlogのflushbackを試すための情報として参考にさせていただいています
  • チョットワカル Row-Based Replication・その2 | GREE Engineering

    こんにちわ。せじまです。今回も replication の話をします。 はじめに 第二回です。 今回の主なお題は、 THD::decide_logging_format() という関数になります。 THD::decide_logging_format() の仕様がわかると、binlog_format が原因で replication 止まる理由が、(そこそこ)わかるようになるでしょう。 また、Row-Based Replication に移行したとき、 THD::decide_logging_format() 以外で replication が停止してしまうケースなどについても、軽くメモ程度に書いておきます。 THD::decide_logging_format() について (MySQL Internals は微妙に内容が古かったりするんですが)、参考までに、まずは 19.4.1 Det

    チョットワカル Row-Based Replication・その2 | GREE Engineering
    tom__bo
    tom__bo 2019/11/18
  • チョットワカル Row-Based Replication・その1 | GREE Engineering

    こんにちわ。せじまです。珍しく replication の話をします。しかも、複数回に渡って続きます。連載です。 はじめに 先日、 こちらのスライドで 「詳しくは後日、ソースコード交えつつ別のかたちでご紹介したいと思います。」と言っていた件です。 Row-Based Replication の話をします。 昨年の8月頃、「そろそろ、SBRからRBRに移行して良い時期かなぁ、しないと将来めんどくさいかなぁ」「でも、 SET GLOBAL で binlog_format 変更できないと、手間かかってしょうがないなぁ」「じゃソースコード読むかぁ」ということで、MySQL の Replication はそんなに得意分野でもないので、他の仕事の合間にちょくちょく調べて、社内文書にまとめてました。 公開しても良いのでは、と思った内容なので、一部修正しつつ、お届けします。 はじめに断っておきますと、この

    チョットワカル Row-Based Replication・その1 | GREE Engineering
    tom__bo
    tom__bo 2019/11/18
  • はてなブログには記事一覧RSSとカテゴリー別RSSがあるよ! - No Hack No Life

    はてなブログにカテゴリー別のRSSがあるのってもしかして常識ですか?? わたくしは今のいままでしらなかったので記事にしたいとおもいます。 標準のRSSフィード まずは標準のRSSについてのおさらい。 ブログ記事のRSSフィードには「atom形式」「rss2」の2種類のフィードがあります。 atom形式のRSSフィード atom形式の詳細はこちら Atom (ウェブコンテンツ配信) - Wikipedia http://{自分のブログのURL}/feed このブログの場合 http://nohack-nolife.hatenablog.com/feed rss2形式のRSSフィード rssについてはこちら RSS - Wikipedia http://{自分のブログのURL}/rss このブログの場合 http://nohack-nolife.hatenablog.com/rss カテゴリー

    はてなブログには記事一覧RSSとカテゴリー別RSSがあるよ! - No Hack No Life
    tom__bo
    tom__bo 2019/09/19
  • 更新フィード - はてなブログ ヘルプ

    はてなブログでは、自動ですべてのブログについてAtomフォーマットおよびRSS 2.0フォーマットによる更新フィードを取得しており、「ブログ全体」、「カテゴリーごと」、「著者ごと」に最新30件の記事を配信しています。 フォーマット フィードの種類 URL Atom ブログ全体 https://ブログのドメイン/feed カテゴリーごと https://ブログのドメイン/feed/category/カテゴリ名 著者ごと https://ブログのドメイン/feed/author/はてなID RSS 2.0 ブログ全体 https://ブログのドメイン/rss カテゴリーごと https://ブログのドメイン/rss/category/カテゴリ名 著者ごと https://ブログのドメイン/rss/author/はてなID これらの更新フィードでは、アクセシビリティの観点から記事の全文を掲載して

    更新フィード - はてなブログ ヘルプ
    tom__bo
    tom__bo 2019/09/19
  • time_zone設定の違うMySQLのレプリケーションについて - 角待ちは対空

    結論としてはできない。正確にはレプリケーションの設定自体はできるがデータが適切に複製されないので設定を変える必要がある。 これはMySQL5.6 -> Aurora(MySQL5.6互換)移行の際、レプリケーションを組んだが、時刻周りで上手くいかなかった問題と解決の記録。 そして、はてなエンジニア Advent Calendar 2018の2日目の記事です。 qiita.com 前提 件の移行の際のmaster以下のような設定だった。 mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | JST | | time_zone | SYSTEM | +-

    time_zone設定の違うMySQLのレプリケーションについて - 角待ちは対空
  • 1on1と信頼残高 - だいたいよくわからないブログ

    最近思ったことを書いておく備忘録的なものです。 特に1on1経験が豊富なわけではなく、むしろ経験が浅いので、何を学びながら進めばいいのやらという段階でのものです。 1on1と困りごと 1on1に何を求めるのか?というのはベースになる考え方はありつつも、個人・チーム・組織の状況によって異なると思います。 将来のキャリアパスについての相談やポジティブなことの共有などもあると思いますが、それと同じくらい困ったことを聞くことが多いと思います。 「困ったことを聞いて、(個人が解決できるように or マネージャーが or ...)解決に導く。」これが、チームの生産性向上に寄与するというのはある程度自明に思えますし、 困ったことを話して、解決してくれるマネージャー*1は頼りがいがあり、まさに信頼できる優秀なマネージャー像にピッタリではないでしょうか。 理想と現実 一方で組織の全権を持っているわけでもない

    1on1と信頼残高 - だいたいよくわからないブログ
  • Dimitriさんのブログを読んでみよう - hiroi10のブログ

    この記事は MySQL Casual Advent Calendar 2018 - Qiita 24日目の記事です。 昨日はhmatsu47さんによるMySQL 8.0 が DMR/RC だった頃に試した機能について振り返ってまとめてみる - Qiitaでした。 この記事について MySQLの各種ベンチマークについて書かれている Oracle の Dimitriさんのブログ があります。 メジャーバージョンアップのタイミングや性能改善が入った場合、様々なパターンのベンチマークを行い公開しています。 但し、グラフがDimitriさん自作のdimstatを利用したものとなっていて、見方・略語が分かりにくくて辛い、という話を前から割と聞いていたので今回ある程度まとめようと思います。 なお、Dimitriさんが行うベンチマークはあくまでベンチマークツールによる負荷をかけた際のバージョン間の改善やM

    Dimitriさんのブログを読んでみよう - hiroi10のブログ
  • 株式会社はてなを退職しました - ゆううきブログ

    2018年12月21日の今日がはてなでの最終出社日となりました。 はてなには、2013年12月に新卒として入社し、その後5年間に渡りお世話になりました。 はてなとの出会いのきっかけは、2011年のはてなインターンに参加したことでした。 はてなインターンの特徴の一つに、ほとんどの参加者が参加したときの内容をブログ記事として書いていることがあります。インターン参加記事には、技術やWebに対する大きな熱量がこもっており、すっかり自分もWeb技術をやっていくのだと感化されました。 ダメ元で選考に望んだところ、運良く選考通過のお知らせをいただいてとてもうれしかったことを今もよく覚えています。 そこから毎年インターンの参加者をみてきていますが、とてもハイレベルで、よく自分が選考通過したものだと今でも思います。 この出来事が自身の人生にとって大きな転機だったと言えるでしょう。 インターンの1年後にアルバ

    株式会社はてなを退職しました - ゆううきブログ
    tom__bo
    tom__bo 2018/12/21
    うおおお、y_uuk1さん今後は何を作るんだろう
  • Replicated State Machinesでのストレージ故障からのリカバリー - だいたいよくわからないブログ

    FOLIOアドベントカレンダー2018 17日目です。 昨日はyasuharu519さんのDocker stop 時に別のコマンドを実行して Graceful shutdown を実現するでした。 NewSQLを調べつつ最近はストレージ周りにも手を出してみたいバックエンドエンジニアの @matsu_chara です。 今回はFAST '18のBest PaperであるProtocol-Aware Recovery for Consensus-Based Storage を読んだので紹介や感想を書きたいと思います。 自分が面白いと思ったところを中心にしたり、個人的に調べた内容が入っていたりするので正確かつ完全な情報は上記論文や関連文献等を直接読んでいただければと思います。 ざっくり プロトコル特有の知識を利用した分散システムにおけるストレージ障害からの回復方法(PAR=protocol-aw

    Replicated State Machinesでのストレージ故障からのリカバリー - だいたいよくわからないブログ
    tom__bo
    tom__bo 2018/12/17
  • DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ - エンジニアHub|若手Webエンジニアのキャリアを考える!

    DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ アプリケーションの寿命よりも長く、データの追加やテーブルの変更で成長し続ける「データベース」と、どのように付き合っていけばよいのでしょうか? 曽根壮大(soudai)さんによる寄稿です。 こんにちは。そーだい(@soudai1025)です。 新しいサービスを始めるとき、必ずと言っていいほどデータベースは利用されています。また今稼働しているサービスの多くでも、RDBMSをはじめ、いろいろなデータベースが利用されています。そんなに広く利用されているデータベースだからこそ、多くの問題の元になるのもまた事実です。 そこで今回は、Webサービスを中心にデータベースの選び方、設計についてお話していきたいと思います。そして私もまさに今、2011年から続くWebサービス「オミカレ」のRDBMSのリファクタリングに携わ

    DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ - エンジニアHub|若手Webエンジニアのキャリアを考える!
    tom__bo
    tom__bo 2018/12/11
  • より速く適切に学べる人、その理由:ほめ方の研究

    tom__bo
    tom__bo 2018/10/28
    “生徒の知性をほめた時と、努力をほめた時の影響の違いは驚くほど大きい /”物理学者のニールス・ボーアは、専門家とは「非常に狭い範囲で、生じうる間違いのすべてを経験した人」だと定義した
  • MySQL Server 8.0.13: Thanks for the 10 Facebook and Community Contributions — Jesper's MySQL Blog

  • InnoDBの監視 ~ mackerel-plugin-mysqlを読み解く その2 - そーだいなるらくがき帳

    この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の20日目です。 qiita.com soudai.hatenablog.com それでは20日目は mackerel-plugin-mysql 第二弾、InnoDBの監視です。 mackerel-plugin-mysqlRDBMSとして広く使われているMySQL専用のプラグインです。 第一弾はこちら。 soudai.hatenablog.com インストール方法や使い方、MySQLのデータ取得で使っているSQLは前回説明したので割愛します。 前回はMySQL全般に言える監視の内容でした。 今回はその中でもInnoDBに特化した内容でお送りします。 見れるメトリック それでは各グラフ定義ごとに説明します。 また表に出てくるdiffとはプラグイン上で差分値計算をするかどうかです。 ◯ となっている項目はプラグインで

    InnoDBの監視 ~ mackerel-plugin-mysqlを読み解く その2 - そーだいなるらくがき帳
  • RedisのSorted Setsで簡易的な遅延実行Queueを作って迅速にLINE LIVEのPC配信対応をリリースした話 - LINE ENGINEERING

    ! This post is also available in the following languages. 英語, 韓国語 みなさんこんにちは、LINE LIVE開発のYappoです。 今回は先日リリースされました一般向けのPC配信機能を実装するときに作った簡易的な遅延実行Queueについて書いていこうと思います。 関連エントリ:LIVE PRESS 公式ブログ – ゲーム実況にもぴったり!LINE LIVEでPC横型ライブ配信を試してみよう 背景 今までのLINE LIVEでの配信方法としては、アプリ上で直接配信する方法と、公式アカウント向けの専用画面(LINE OFFICIAL ACCOUNT MANAGER)とRTMPソフト(もしくは専用機材)を利用してPCからの配信する方法がありました。 この2つの方法は全く違う仕組みで実装されるように見えますが、実は基となる設計は同じで

    RedisのSorted Setsで簡易的な遅延実行Queueを作って迅速にLINE LIVEのPC配信対応をリリースした話 - LINE ENGINEERING
  • Go1.7のcontextパッケージ

    Go1.7ではgolang.org/x/net/contextがcontextパッケージとして標準パッケージに仲間入りする.そしていくつかの標準パッケージではcontextパッケージを使ったメソッド/関数も新たに登場する.contextパッケージは今後さらに重要な,Gopherは普通に扱うべき,パッケージになると考えられる.記事ではそもそもcontextパッケージとは何か?なぜ登場したのか?なぜ重要なのか?どのように使うべきか?についてまとめる. contextパッケージが初めて紹介されたのは2014年のThe Go Blogの記事 “Go Concurrency Patterns: Context”である.この記事ではなぜGoogleがcontextパッケージを開発したのか,どのように使うのか具体的な検索タスクを例に解説されている.まだ読んだことがない人はそちらを先に読むと良い. co