2025年度 traP新歓オリエンテーションのLTで発表した内容です。5分のLTなので1章のみを話しました。

# 参考資料 - https://speakerdeck.com/hanhan1978/purohuairawoshi-tutaphpapurikesiyongai-shan-falsekan-suo - https://speakerdeck.com/hanhan1978/web-applicat…
SELECT table_a.id, table_a.name FROM table_a INNER JOIN table_b ON table_a.id = table_b.id; メリットとしては、 どちらかのテーブルのid列のインデックスを使用可能 サブクエリがないことで中間テーブルが作成されない しかし、インデックスがない場合はEXISTSの方が良い場合があります ソートの回避 SQLでは暗黙的にソートが発生する演算が存在するので、 パフォーマンスにも影響するため、ソートが必要ない場合は考慮する必要があります ソートが発生する演算 GROUP BY句 ORDER BY 句 集約関数(SUM, COUNT, AVG) DISTINCT 集合演算子(UNION, INTERSECT, EXCEPT) ウィンドウ関数(RANK, ROW_NUMBER 等) メモリ上でのソートだけではなく
対話型AIのChatGPTを開発したOpenAIが、2023年3月にリリースしたGPTモデルファミリー「GPT-3.5 Turbo」のファインチューニング(微調整)機能を発表しました。GPT-3.5 Turboをファインチューニングすることにより、「出力する言語を固定する」「応答の言葉遣いをブランドや企業のイメージに沿ったものにする」など、ユーザーの用途に合わせたカスタマイズが可能になるとのことです。 GPT-3.5 Turbo fine-tuning and API updates https://openai.com/blog/gpt-3-5-turbo-fine-tuning-and-api-updates OpenAI brings fine-tuning to GPT-3.5 Turbo | TechCrunch https://techcrunch.com/2023/08/22
こんにちは、freee会計でワークフロー機能の開発をしている @mitubaEX です。 先日 freee会計のパフォーマンスチューニングに取り組みました。本記事では、調査の流れ、改善の事例を紹介します。 問題発覚までの流れ freee では自社の経理業務に freee会計を利用しており、その中でも経費精算の機能はほぼすべての従業員が利用しています。そのため日々多くのフィードバックをもらえます。そのフィードバックの1つで、「経費精算の一覧を開くのが遅い」という報告をもらいました。幸い表示件数を指定できるので調整すれば遅くはならないのですが、一覧性が下がってしまうため有用な解決策ではありません。 そこでワークフローを開発しているチームで、このパフォーマンスイシューの調査を始めました。 調査する まず事前調査として Datadog*1 で一覧画面を表示するリクエストの処理を確認しました。 一覧
SQLのチューニング方法 昔Qiitaで書いたものをzennにうつして、若干の修正、追加をしてみました。 ORACLEでの経験を元に書いていますがコストベースのリレーショナルデータべースなら大体共通の考え方だと思うので他にも使えると思います。 SQLのチューニングといえば比較的容易に済むインデックスをとりあえず作成する。といった対応を取られがちですが、数万レコード程度でのデータ量ではあまり効き目がなく(自分の経験則)、どちらかといえば、結合順が大幅に狂ってたりすることが原因のことが多かったりします。よって本当にインデックスがないことが原因なのか?を熟考する必要があります。(例えばID以外のフラグとかコードに単項目indexを貼ってるのもみたことがあります。怖いけど実話) また、インデックスを作りすぎるとオプティマイザが狂いやすくなって他のSQLにも悪影響を及ぼしたりするので結構熟慮して追加
MySQLに限った話ではないが、データベース管理システムに大量のデータを投入するのは時間が掛かり大変苦痛を伴う作業である。劇的に効能があるわけではないが、MySQLを利用しているとき、特にInnoDBを使っている場合にはデータの投入を高速化するためにいくつかテクニックがあるので紹介しよう。皆さんの作業時間が短縮され、少しでも早く帰路に着いたりサービスインさせたりという形でお役に立てれば幸いである。ちなみに、タイトルはネタであるのだが、もし本当に3秒で以下の全ての設定を行えた人が居たら教えて頂きたい! ログファイルサイズの調整データ投入時に限った話ではないが、ログファイルサイズを調整するのは更新性能にとって非常に重要なファクターである。バッファプールのサイズが重要なことに代わりはないが、同じぐらいログファイルのサイズも重要である。InnoDBはログファイルを使い切ってしまうと、バッファプール
先日別のチームから、 「PHPで作成したWebアプリの速度が遅いので助けてくれー」 という相談を受けた。 対応したものの、結構時間がかかって面倒だったので、 今後こういった問題が起こった時に使えるよう、チェックリストをまとめてやった。 基本的な内容だけど、 このチェックリストの内容をやってみて、それでもダメなら相談しなさい、 と伝えておくことで相談を減らすフィルタとして働いてくれるはずだ。 PHPプロジェクトに限らず、バックエンドでデータベースを使用している Webアプリのプロジェクトなら試す価値のあるものが多いはず。 調査や対応方法の手軽さ順で並べるとこんな感じ: Webブラウザのデベロッパーツールでレスポンスを計測する Webサーバ(Apache)のリクエスト時間をログに出力する ログ解析ツールでURL毎の付随リクエスト数を確認する データベースのスロークエリログを出力する プロファイ
バケットのIPアドレスを適切なものに固定することで、期待値でいうと1.5倍、最大で4.5倍程度高速にダウンロードできます。 この方法は非常に効果が高いですが、非公式なものであり、ある日突然破綻する可能性もありますので自己責任でお願いします。 S3のバケットとエンドポイント まずは前提知識として、S3の名前解決について説明します。 S3のバケット "mybucket" というバケットを東京リージョンに持っているとします。するとそのバケットのドメイン名は mybucket.s3.amazonaws.comになります。これをエンドポイントと呼びます。このバケットの中にあるファイル "hello.txt" にアクセスする場合には、 http(s)://mybucket.s3.amazonaws.com/hello.txtというようなURLを用います。*1 エンドポイントのIPアドレス この myb
ソーシャルゲーム開発者なら知っておきたい MySQL INDEX + EXPLAIN入門 広く浅くを担当してます、ota です。 技術ブログ第一回から早速流用スライドで申し訳ありませんが、社内勉強会資料として作成した「MySQL INDEX + EXPLAIN入門」です。 当社でもソーシャルゲームの開発を行っていますが、このような大量のデータを使用する・クエリの速度が求められる場合にインデックスは大変重要です。 インデックスの有効な利用にはDB設計者だけではなくプログラマにもある程度の知識が最低限必要となりますが、インデックスについての初心者向け資料があまりないようです。 このスライドではプログラマに知っておいて欲しい以下の基本的な点をまとめました。 INDEXを使用する時に気をつけること WHERE句 !=、<>はインデックスが使用できない WHERE句の全てのANDにかかっていないイン
前書き - インデックスの作成はなぜ開発者のタスクなのか インデックスの 内部構造 - インデックスは何に似ているか インデックス リーフノード - 二重連結リスト 検索 ツリー(Bツリー) - バランス木 遅いインデックス パートI - インデックスを遅くする2つの原因 where 句 - 検索のパフォーマンスを改善するためにインデックスを作成 等価 演算子 - 一致するキーの検索 プライマリキー - インデックスの使い方を確認 複合インデックス - 複数列に対するインデックス 遅いインデックス パートII - 前の問題点が再び 関数 - where句の 中での関数 大文字・小文字を区別する 検索 - UPPERと LOWER ユーザ定義 関数 - 関数インデックスの制限 インデックスの作り過ぎ - 冗長性の排除法 パラメータ化 クエリ - セキュリティとパフォーマンスのために 範囲 検
こんにちは。新規事業本部・金融グループの金(成奉)です。 前回は高性能GIS専用のPostgreSQLデータベースサーバーの構築について話しましたが、今回はFastCGI基盤ウェブサーバーのPHPコンパイル構築、チューニング、設定などについてお話したいと思います。内容の範囲が広く、長文になっているため、3回に分けて投稿します。 PHPは、ほとんどのモジュールがコンパイルされるような構成となっています。おまけにGIS関連のデータを扱うことのできるGEOSエクステンションの追加などにも触れています。 ウェブサーバーは、ApacheとNginxになりますが、Nginxのコンパイル構築方法についても説明します。特にApacheでPHPを運用する際、最も効率よい構成はなんだろうと開発やインフラ担当の方はきっと悩んだことがあるかと思います。ApacheとPHPをどのような構成と設定で運用すれば、高いパ
サ−バ等に使っているPC のメモリが十分かどうか気になる事は多いと思う. 調べ出すと フリーメモリーの不足や SWAP にメモリーがはみだしている様子など 心配な事がいろいろでて来る. PC の動作が遅くなる原因は様々な要因が絡み合っているので, 表面に現れた症状だけでは効果的な対策が分からない事もある. 以下では, メモリ−関連にしぼって解説する. メモリの状況を調べる メモリ−は十分なはずなのに 余裕が無い? どのプロセスがメモリを消費しているのか? メモリーのリークを検出する方法? 防止する方法? メモリ−は十分なはずなのに SWAP を使ってる? じゃ, 本当のメモリ−不足はどうしたら分かるの? メモリーと SWAP 領域はどのくらい確保すると良いのか メモリの状況を調べる メモリの利用状況を調べる方法は, free, top, ps, vmstat, /proc/meminfo
へんじがない。ただのポンコツのようだ。 ポンコツが今日も持ち場でガンバリつつ、 楽しく生きていくための備忘録ブログ。ぬわーーっっ!!2005年7月から絶賛「更新」中! 【この記事の所要時間 : 約 4 分】 MySQLのチューニングにおいてクエリキャッシュは、データベースへアクセスする負荷を軽減するので、負荷が上がったときにチェックしたい項目の1つである。 MySQLのデフォルトでは、クエリキャッシュを使用しない状態になっているので注意したい。 query_cache_sizeの違いによるパフォーマンス比較 MySQLサーバには、MySQLクライアントからのクエリとその実行結果をキャッシュし、次回から同じ内容のクエリが要求された場合にキャッシュから応答する、クエリキャッシュという仕組みがあります。キャッシュから応答させることによってデータベースへアクセスする負荷を軽減し、また応答速度自体の
140文字で収まらなかったので. ssh でログインはできる(認証は成功している)し操作も普通に行える(RTTが正常な範囲)けど,ログインできるまでに(パスワード認証の場合はユーザ名やパスワードを聞かれるまでに)非常に時間がかかるような場合の原因と対処方法を記しておく.こうした現象は主に何らかの方法に挑戦して失敗・タイムアウトしていることが原因である. クライアントの名前解決が原因 クライアントの名前解決ができなくて時間がかかっている.サーバ側での設定変更が主. ssh サーバの /etc/hosts にクライアントの設定を書く 名前解決ができないので ssh クライアントの直接名前を設定してあげる.個別対応なのであまり良い解決策ではないが,やむを得ない場合はこの方法. 192.168.0.2 ssh-client.example.com 192.168.0.2 がクライアントの IP ア
仕事でMySQLのパフォーマンスチューニングをしていて、インデックスについて分かっていないことが多かったので調べたことをメモ。基本的なところから学習しなおした。 MySQLのインデックスは、カラムが特定の値をもつレコードの迅速な検索に使用される。インデックスを使用すれば、数百とか数億ものレコードが入っているテーブルから、一組のレコードを迅速に見つけて取り出すことが可能になる。 しかし、インデックスは速度を改善することもあるが、挿入の邪魔になって遅くなることもある。 インデックスを適切に使うために、まずはインデックスの基本概念をおさえる必要がある。 インデックスの概念 インデックスとは インデックスの仕組みを理解するには、まずMySQLがどのようにクエリに応答するかを知る必要がある。 例えば、 SELECT * FROM phone_book WHERE last_name = 'Hoge'
結構Firefoxが好きなので、ちょこちょこ改造していたんですが、管理するPCごとに新しいこと試したり前やってたことをやめたりしてるうちに何が何だかわからなくなってきてしまったので、そろそろまとめようかなー?ってことでまとめてみました。 ちなみに、ここに書いてある改造は完全に自宅マシン用です。 会社のマシンでここまでやると・・・ちょっと動作とかアドオンの不都合とか色々検証してないことも多いので、出来るだけご自身の責任でお願いいたします。 とりあえず手始めに入れるアドオン SQLiteOptimizerアドオンを入れる Firefoxの重たくなる一番の原因となる、SQLiteの計量最適化を図ってくれるアドオン。 Faster Fox Liteアドオンを入れる 設定は「ターボチャージャー」に。 かつ、アドバンス設定で「Disable IPv6 DNS lookup」にチェック。 MemoryF
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く