データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

3
多くのSELECT / INSERT / UPDATE / DELETEでのMySQLの高パフォーマンス
私は、すべてのユーザーが10〜300秒間レコードをテーブルに取得するモジュールを作成しています。 時間切れになると、レコードが削除されます。ケースは:多くのユーザーが存在し、レコードは実際に頻繁に変更されます-これはこのテーブルのアプリケーションのパフォーマンスにどのように影響しますか?レコードは非常に頻繁に変更されるため、mysqlはそれで問題ないのでしょうか?インデックスが行き来するように、この特定のテーブルのデータは200回/秒のように変化します。多分私はこの種の仕事のために悪い解決策を選んでいます。助言がありますか ? ありがとうございました!

2
SQLサーバーのメモリカウンターを取得して値を表示するPowerShell
次のSQLサーバーカウンターをキャプチャするPowerShellスクリプトを書いています。 SQL Server:メモリマネージャー:合計サーバーメモリ(KB) SQL Server:メモリマネージャー:ターゲットサーバーのメモリ(KB) 私のマシンにはSQLサーバーの3つのインスタンスがあるため、このスクリプトですべてのカウンターを動的にキャプチャし、1つのサンプルの値のみを報告します。私は以下を書いてみました: Get-counter -List *SQL*Memory* | Select paths, counter | format-list # doesn't display full list Get-counter -List *SQL*Memory* | Select paths, counter | where {_.counter -like "*server memory*"} |format-list # displays nothing 最終的には、これを-computernameパラメーター付きで複数のサーバー間で実行したいので、動的にキャプチャーしたいと思います。 誰かが欠けているものを見つけるのを手伝ってくれませんか?以下は、私が実行している正確なスクリプトです。 Function checkTransactionsPerSecond([string] $Hostname ) { (Get-Counter -ListSet "*Databases").Counter | Where {$_ …

3
SQL Serverエージェントジョブのチェーン
SQLサーバーエージェントでジョブをセットアップしたそれぞれにいくつかのワークパッケージがあります。時々私はすべて一緒に実行する必要があります。それらをすべて特定の順序で実行するための最良の方法は何ですか?SQLサーバーエージェントが、実行するジョブステップとしてジョブを含めることができないことに少し驚いています。私は試しました

3
mysqldumpが進行中の場合、ユーザーはシステムの実行速度が遅いと不平を言う
MYSQLデータベース(ibdata1)のサイズは73 GBで、Windows 2008 O / SでINNODBテーブルの専用データベースサーバーとして実行するように構成されています。mysqldumpを使用してバックアップを実行していますmysqldump --skip-opt --quick --single-transaction --create-options --extended-insert --disable-keys --add-drop-table --complete-insert- set-charset-圧縮--log-error = Proddb0635.err -u root -pjohndoe Proddb> \ devNas \ devNas \ sqlbackup \ LIVE \ db \ Proddb0635.sql バックアップファイルProddb0635.sqlは、データベースサーバーとは別のサーバーに保存されます。RAMは12 GBです。INNODBバッファープールのサイズは6 GBです。追加のmem.poolは32 MBです。クエリキャッシュのサイズは2 GBです。ネットバッファーの長さは最大16 Mです。パケットサイズ1 GB。 mysqlのバージョンは5.0.67です。 バックアップが実行されていない場合、ユーザーはパフォーマンスに満足しています。 バックアップの実行中にINNODBバッファープールのヒット率が100%に近い高い値になっています。保留中の読み取りまたは保留中の書き込みはありません。innodb wait freeは0です。CPU使用率は高くありません。最小9%から最大15%mysqlbackupが実行されているかどうかに関係なく、クエリキャッシュヒット率は約40%と低くなっています。現在、Windowsタスクマネージャーは、10 GBのRAMが使用されていることを表示しています。2 GBのRAMしか利用できない状態でクエリキャッシュを増やす必要がありますか?mysqlld-ntは9.2 GBのRAMを使用し、mysqldumpは5 MBのRAMを使用しています。Alos氏は、-compressオプションの有無にかかわらず、ダンプファイルのサイズは同じであることに注意しました。 iNNODBバッファープールのサイズを減らす必要がありますか? …

3
Yelpはどのようにしてデータベース内の距離を効率的に計算しますか?
たとえば、テーブルがあるとします。 Business(BusinessID, Lattitude, Longitude) もちろん、すべてに索引が付けられています。また、100万件のレコードがあります たとえば、106,5に最も近いビジネスを検索したい場合、どうすればよいでしょうか。 私が行った場合 SELECT * FROM Business WHERE (Some formula to compute distance here) < 2000 たとえば、または私が行う場合 SELECT * FROM Business TOP 20 理論的には、コンピューターはすべてのビジネスの距離を計算する必要がありますが、実際には、緯度と経度が特定の範囲内にあり、計算する必要があるビジネスのみが計算されます。 たとえば、PhPやSQLでやりたいことはどのようにしたらよいでしょうか。 これまでの答えに感謝しています。私はmysqlを使用していますが、それらには明らかな解決策よりも効率的なものはありません。MySQL空間には、距離計算機能もありません。

3
mysqlで更新と挿入クエリを1つのクエリに結合することに関するクエリ
ユーザーの変更履歴を追跡したいので、ユーザーがプロファイルを変更するたびに、古いデータを取得して履歴に保存し、新しいデータで更新する必要があります。 a selectを使用して古いデータを取得し、inserttoを履歴に、最後にを使用してデータupdateを変更できます。 ロックなどを使用するようなストアドプロシージャ、トリガーなどを使用せずに、これらすべてをmysqlの単一のクエリで使用できます。
9 mysql 

2
これはMySQL特権の通常のセットですか?
ローカルのテストワンプセットアップでphpmyadminを使用すると、タイトルのほとんどの状態と同様に、user = ANY、password = NOのようにマークされた3人のユーザーがいます。 USER | HOST | Password | Global Priv | Grant -----+---------+----------+-------------+------ Any | % | No | USAGE | No Any | Local | No | USAGE | No Any | Domain | No | USAGE | No -----+---------+----------+-------------+------ 3人のどのユーザーも、どのテーブルに対しても特定の特権を持っているわけではないため、ユーザーは多くのことを実行できないようです。これは、他のユーザーグループに属さない「すべての」ユーザーには特権がないことを明示的に述べるための、ある種の一般的なセキュリティ対策ですか?

1
MySQL DBサーバーでOPTIMIZE TABLEクエリを実行する利点
OPTIMIZE TABLE tbl_nameMySQLサーバーでクエリを実行することで得られる利点(実際に実用的)を教えてください。 これを一度確認したところ、これを実行した後、フラグメントの再配置などが原因で次のDBヒットに時間がかかる可能性があることがわかりましたが、その後のヒットではパフォーマンスが表示され、クエリキャッシュがこのトリックを実行するかどうかわかりません最適化または最適化のみでこのトリックを行います。 MySQLでの作業が私たちのプロジェクトで重要性を増しているので、可能であれば、実際のパフォーマンスの差の値を誰かがガイドしてくれますか?

3
MEMORYストレージエンジンを使用していますが、MySQLはまだディスクに書き込みます…なぜですか?
MEMORY Engine特定のMYSQLクエリに関連付けられているすべてのテーブルにfor を使用しています。これは、プロジェクトのアクセス速度が最も重要だからです。 何らかの理由で、大量のディスク書き込みがまだ発生していることに気付きました。 これは、WindowsがRAMをディスクにスワップしているためですか?これを防ぐにはどうすればよいですか? 編集:ここに私のグローバル変数があります: mysql> show global variables; +---------------------------------------------------+-------------------------------------------------------------------------------- ------------------------------+ | Variable_name | Value | +---------------------------------------------------+-------------------------------------------------------------------------------- ------------------------------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | autocommit | ON | | automatic_sp_privileges | ON | | back_log | 50 | | basedir | C:/Program Files/MySQL/MySQL Server …


1
残余述語とは何ですか?
MSDNでオンラインで述語の定義を見つけることができましたが: TRUE、FALSE、またはUNKNOWNに評価される式です。述語は、WHERE句とHAVING句の検索条件、FROM句の結合条件、およびブール値が必要なその他の構文で使用されます。 残余述語が何であるかの定義を見つけることができませんでした。残余述語とは何ですか?


3
本番環境での特権を削減するが、仕事を過度に困難にしないための指針
Windows 2008 R2でSQL Server 2005および2008を実行します。 開発者の本番環境での特権を削減します。私もDBAと同じように、本番環境への権限を制限し、必要に応じて昇格させたいと考えています。 私の主な目標は、愚かな過ちを排除することです-DBA によって行われるため、開発者はせいぜい本番環境で読み取りアクセスしかできません。私たちは間違いを犯さないスーパーヒーローであるように行動するのが好きですが、常に制作権を持っているわけではないのは理にかなっており、一部の人が推奨するベストプラクティスです。 最善のアプローチは何ですか?日常的に、およびインストール中に最も苦痛を感じないものは何ですか? 現在、すべてのサーバーとデータベースに対する権限を持つDBAのWindowsグループがあります。 OSやリモートログインの権限を下げることにも興味がありますが、DBの権限に最も関心があります。 古いトレースのSA権限を削除する前に、saとしてトレースを実行し、場合によっては所有権をクリーンアップするために、昇格された特権が必要になると思います。他にどのような問題が予想されますか? あなたのアドバイスとあなたの経験を共有してくれてありがとう!

2
Google ngramをデータベースに保存するのに最適な方法は?
数日前にgoogle onegramをダウンロードしましたが、すでに大量のデータがあります。10個のパッケージの最初のパッケージをmysqlに挿入すると、4700万個のレコードデータベースができました。 どのようにしてGoogle ngramをデータベースに最適に保存すればよいのでしょうか。つまり、1グラムを使用していない場合、たとえば2グラムや3グラムを使用すると、量ははるかに多くなります。1つのデータベースに5億のレコードを保存して使用できますか、それとも別のテーブルに分割する必要がありますか? いくつのレコードを分割する必要があり、どのように最適に分割する必要がありますか(2グラムには100個のファイルがあり、したがって約50億のレコードがあると考えます)。MySQLの水平パーティションを使用するか、独自のパーティションを構築することをお勧めしますか(たとえば、wordの最初の文字=> twograms_aを使用)。

3
SQL Server 2008でのvarcharの使用による速度への影響
昔は、他の行とは別のページに格納されていたため、varcharover を使用することcharは大したことではありませんvarcharでした。これは、SQL Server 2008でも現在も当てはまりますか?1〜3 varchar(5)列をchar(5)テーブルの列に変更することで、メモリ/パフォーマンスが向上しますか? a)2.000.000行と言うb)varchar列のいずれかがインデックス/主キーの一部である場合

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.