問題タブ [database-management]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PDOでのMySQLデータベース接続管理
私はPHP/MySQLに非常に慣れていないので、学習しながら学習しています。私が学んだ新しいことの1つは、特定のユーザー名に対してデータベースに対して確立できる接続の最大数があるということです。Wordpressで最初にWebサイトを構築し始めたとき、私は古いmysql_query()コマンドを使用していました。WordpressはWebサイトにログインするだけでアクティブな接続を維持するため、MySQLデータベースに接続する必要はありませんでした。すべてのMySQLクエリをPDO拡張機能に切り替えることにしたとき、Wordpressのアクティブな接続を利用できなくなり、独自のデータベース接続を開始する必要がありました。これは、スクリプトを実行するすべてのページに含めた個別のPHP構成ファイルで行いました。PHPコードは次のようになります。
残念ながら、今は常に次のエラーが発生します。
「SQLSTATE[42000][1203]ユーザーにはすでに「max_user_connections」を超えるアクティブな接続があります」
いくつかのオンライン調査に基づいて、私はこれを修正するためにさまざまな異なる方法を試しました。まず、各スクリプトの最後でデータベース接続をnullに設定しようとしました(ただし、これはPHP PDOのデフォルトである必要がありますか?)。null
次に、データベースの各クエリの後に各ステートメントハンドルを設定しようとしました(これは絶望的な試みでした)。そして最後に、設定ファイルの次の行を変更して、持続的接続を使用してみました。
これはどれも機能していないようですが、それでもまったく同じエラーが発生します。サイトの準備ができたら、無数の異なるデータを入力する1日あたり100〜200人を処理できる必要があります。PDOを使用してWordpressのアクティブな接続を利用する方法を理解できたとしても、それは良いスタートです。私が得ることができるどんな助けにも感謝します。
アップデート:
SHOW FULL PROCESSLIST
コードの1つでMySQLクエリとして実行していますが、非常に奇妙な動作をしています。これは私のスクリプトの最初の部分です(SHOW FULL PROCESSLIST
クエリは含まれていません):
SHOW PROCESS LIST
ifステートメントの外でクエリを実行しようとすると、アクティブな接続が1つあるという結果が得られます。ただし、 ifステートメント内SHOW FULL PROCESSLIST
でクエリを実行しようとすると、接続数を超えたというエラーが表示されます。この結果に基づいて、ユーザーがフォームを送信するときに(基本的にデータベースに2回接続しようとすると)、ページの最上部にある私の行が問題を引き起こしている可能性があると考えたので、ifステートメント内に移動しましたが、違いもありませんでした。なぜこれが起こっているのか私は途方に暮れています。include
更新/回答(まだいくつかの質問):
私は自分の問題が何であるかを理解しました。スクリプトの1つが完了すると、別のスクリプトがそれらの請求書を印刷するウィンドウをポップアップするjavascriptコマンドがあります。その2番目のスクリプトも、構成ファイルを使用してデータベースへの接続を試みます。ユーザーが操作しているフォームは動的であるため(必要な数のデータセットを入力できます)、ユーザーが少数のデータを挿入すると、PDOクエリが非常に高速に実行され、競合は発生しません。接続の数。ただし、ユーザーが大量のデータを入力すると、かなり長い時間がかかり、サーバーは接続の最大数に達します。この問題は、サーバー環境の悪さと私の側の非効率的なクエリの組み合わせに本当にあります(まだPHPを学習しています)。この時点で考えられる唯一の解決策は、他のスクリプトに追いつくために、2番目のスクリプトでより長いスリープを設定することです(すでに3秒のスリープを使用しています)が、ある時点で、これには時間がかかりすぎます。もっと良い提案があるかどうかわかりませんか?
jdbc - IPv6形式のデータベースサーバーアドレスをサポートするデータベース管理ツール
WindowsServer2008でSybaseASE15.5を使用し、管理にSybase Central(JDBCドライバー)を使用しています。マシンをIPv6のみのモード(純粋なIPv6)に構成し、DSEDIT接続プロパティを修正した後、ISQLユーティリティ(C ++でクライアントプログラムを開く)を使用してDataseサーバーにpingを実行し、データベースにアクセスできます。
ただし、SybaseCentralでは[ホスト名]フィールドにIPv6アドレスを使用できません
すなわち:
IPv4:
IPv6:
DbVisualizerのような他のJDBCツールを試しましたが、IPv4のみが許可され、IPv6は許可されません
すなわち:
IPv6形式のデータベースサーバーアドレスをサポートするデータベース管理ツール(JDBCドライバー)はありますか?
mysql - 遅いクエリを決定する方法は?
サイトの読み込み時間が非常に遅いです。読み込みに時間がかかるのは JavaScript か php ではないかと疑っていますが、サイトを YSlow でテストしたところ、評価は B で、悪くないと思います。
ここで、クエリ、データベースのインデックス作成に問題があり、サイトの読み込みが遅くなっていないか、データベースをチェックしたいと考えています。
遅いクエリがあるかどうかを判断するために、データベースを読んだりテストしたりするチュートリアルやトリックはありますか? データベース管理のヒントはありますか?
mysql - ユーザーデータをmysqlデータベースに効率的に保存する
私は推奨エンジンを開発しているため、大量のデータを保存し、ユーザーが行ったすべての動きを追跡する必要があります。したがって、基本的に私のウェブサイトは製品検索エンジンであり、ユーザー データとしてクエリのセットを持っています。以下は、データセットのいくつかの例です
例
等々。
1つの方法(単純)は、各ユーザーに関連付けられたIDを持ち、そのIDに対応する文字列を次の形式にすることができます(文字列は で区切られます~
):-
しかし、後でこれらのデータをどのように扱うかを考えると、この方法は効率的ではありません。
mysql でかなり簡単に実装できる非常に効率的なモデルを思いつく人はいますか?
疑問を質問する際に不明な点がある場合はコメントしてください。
database - Oracleの自動GRANT権限
私はDBMSが提供するセキュリティを分析しようとしています。次のシナリオは、私が探しているものの簡単な説明を提供します。
//データベースに接続している現在のユーザーは「マスター」です
//1.新しいユーザーを作成するための基本的な手順
//2.新しいユーザーに基本的な役割を付与します
//3.新しいユーザー「slave」がデータベースに接続されました
//ユーザー"slave"は、データベースオブジェクト(テーブル、プロシージャなど)を作成し、システムの他のユーザーから特権を付与します
作成者「マスター」が、「スレーブ」ユーザーからの明示的な許可なしに、作成されたユーザー「スレーブ」が持つ、または将来持つであろう特権を取得できるようにするにはどうすればよいですか?
スレーブが他のユーザーに自分の特権を付与できることは知っていますが、他のユーザーが「スレーブ」が持つ将来の特権を取得できるようにする特別な特権はありますか?
私はOracleを使用していますが、他のDBMSがこのシナリオを許可しているかどうかはわかりません。
java - メソッドを公開するためのより良い方法
Webサービスのデータベースマネージャーレイヤーを作成しています。ライブラリを実装する方法を決定する必要があります。これが状況です。PersistenceUnitというクラスがあります。
これでdbサービスが開始され、接続できるようになります。私が欲しいのは、addUser(...)やdeleteFile(...)などの永続メソッドを実装するクラスを作成することです。私の疑問は、これらの方法をどのように実現するかです。2つの大きなクラスの操作(1つはユーザーともう1つはファイル)があるため、クラス(ユーザーとファイル)に作成してパブリック静的メソッドを実装するか、同じように2つのシングルトンを作成することを考えました。アプリケーション層は、毎回オブジェクトを作成および破棄せずにメソッドを呼び出す必要があります。これは私のレイヤーを実現するための良い方法ですか?このように、並行性は適切に処理されますか、それともパフォーマンスとマルチスレッドを最大化するためのより良い方法(おそらくパターン)がありますか?確かに、これはメモリにバインドされたレイヤーではありません。上位レイヤーがオブジェクトを継続的に作成する必要がないためです。ありがとうございました
php - マルチユニットサポート機能付きインベントリ
私はインベントリ システム (PHP Codeigniter & MySQL) を開発してきました。クライアントの 1 人がシステムに実装したい 1 つの機能 (システムのマルチ ユニット サポート機能) を除いて、ほとんどすべてをセットアップしました。
現在、私のシステムでは、トランザクションごとにアイテムごとに 1 つのユニットのみがサポートされています。
マルチユニット機能では、これは次のようになります。
おそらくこれを実装する簡単な方法について誰かが私にヒントを与えることができますか? このことをどこから始めればよいか知りたいだけです。誰かがこれに関するアイデアを共有できれば幸いです:)
sql-server-2008-r2 - SQLサーバーはミラーデータベースを複数のデバイスに分割します
単一の MDF デバイスに存在する大規模なミラーリングされた 1 TB DB があり、それをたとえば 5 つの 200 ギガ デバイスに分割したいとします。プロダクションを中断することなくこれを行いたいです。
ミラーを壊し、RESTORE プロセスを使用してミラーを作成し、本番環境を中断することなく、複数のデバイスへの分割を迅速に実現できると考えました。これを 2 回行うと、数時間で完了できます。
誰かがこれをしましたか?とにかくミラーリングしているので、それが好ましい方法ですか?
他の選択肢、長所と短所は何ですか? そして落とし穴?
また、5 つの新しい新しいデバイスを作成し、時間の経過とともにオブジェクトを新しいデバイスに移動させる、別のより有機的なプロセスを思い出します。このプロセスについては定かではありませんが、議論されていたことを思い出すようです。これには長い時間がかかり、場合によってはクロッキングが発生する可能性がありますか?
ありがとう
...レイ