我们的MySQL服务器似乎使用了大量内存。
我尝试寻找没有索引的慢速查询和查询,并将峰值CPU使用率和Apache内存使用量减半,但MySQL内存始终保持在2.2GB (服务器上可用内存的51%左右)。
这是普列斯克的图表。运行在SSH窗口中的顶部显示相同的数字。
📷
有没有人知道为什么内存使用量是这样的常量,而不是高峰和低谷的应用程序的使用?
下面是MySQL调优初级脚本的输出:
-- MYSQL PERFORMANCE TUNING PRIMER --
- By: Matthew Montgomery -
MySQL Version 5.0.77
我试图在mysql中构建一个参数化视图,这样我就可以通过PHP调用它来指定参数。
实际上有两个视图:第一个视图实现参数,第二个视图只是从第一个视图中选择:
CREATE VIEW first_view AS
SELECT * FROM my_table t WHERE t.parameter < get_parameter();
CREATE VIEW second_view AS
SELECT * FROM first_view;
get_parameter函数的实现方式如下:
CREATE FUNCTION get_parameter() RETURNS timestamp
假设我有一个名为Projects的表,其中有一个名为Budget的列,它有一个标准的B-树索引。该表有5万项项目,其中只有1%的项目的预算超过100万项。如果我运行SQL查询:
SELECT * From Projects WHERE Budget > 1000000;
规划者将在Budget上使用索引范围扫描来从堆表中获取行。但是,如果我使用该查询:
SELECT * From Projects WHERE Budget > 50;
规划者很可能会对表进行顺序扫描,因为它知道这个查询最终将返回大部分或所有行,而且没有理由将索引的所有页面加载到内存中。
现在,假设我运行这个查询:
SELECT name FROM customers WHERE location = ? AND active = '1'
在这个查询中,位置的值来自一个不受信任的源,但是active的值总是= 1,我在php/mysql中使用了PDO。
我也应该参数化active的值吗?
如果 active 不是常量,而是来自一个不断变化的、可信的源,那么我应该仍然参数化吗?(即。(为了缓存好处?)
我正在学习Postgreslq,我有一个关于这个代码示例的问题:
CREATE OR REPLACE PROCEDURE CreateProject(
IN projectName VARCHAR(45),
IN projectYear SMALLINT)
LANGUAGE plpgsql
AS $$
BEGIN
-- PREPARE addProject (VARCHAR(45),SMALLINT) AS
-- INSERT INTO projects (projectName, year) VALUES ($1, $2);
-- EXECUTE addProject
我正在将我的.NET/MSSQL迁移到RoR/MySQL/EC2/Ubuntu平台。在我将所有现有数据转移到MySQL中后,我发现MySQL查询速度非常慢,即使是像查询select count(*) from countries这样的超基本查询,它也只是一个国家/地区表,只包含大约200条记录,但查询需要0.124ms。这显然是不正常的。
我是MySQL的新手,谁能告诉我可能的问题是什么?或者安装MySQL后我应该打开的任何初始优化按钮?