cnf参数配置实现InnoDB引擎性能优化,一个巧用字

MYSQL 一个巧用字符函数做数据筛选的题,mysql字符

问题描述:

结构:

test 有两个字段,
分别是col1和col2,都是字符字段,
里面的内容都是用,号分隔的三个数字,并且是一一对应的,

比如col1内容是:26,59,6
col2内容是:1502.5,1690,2276.77
一一对应就是26的值是1502.5,59是1690,6对应2276.77

搜索条件:

选择一个id,比如选择59,再输入一个数字,比如:2000
然后就是搜索col1中存在id=59的记录,然后搜索col2小于2000,即1690<2000

举例:

如有以下三条记录,搜索id为59,值小于2000的记录:

26,59,6 | 1502.5,1690,2276.77
59,33,6 | 3502.1,1020,2276.77
22,8,59 | 1332.6,2900,1520.77

搜索到这三个记录存在id为59,之后判断第二个搜索条件应为(即用对应id位置的数字对比):

1690<2000
3502.1>2000
1520.77<2000

drop table test; 
create table test ( col1 varchar(100),col2 varchar(100)); 
insert test select 
'26,59,6', '1502.5,1690,2276.77' union all select 
'59,33,6', '3502.1,1020,2276.77' union all select 
'22,8,59', '1332.6,2900,1520.77'; 
select col1,col2 
from (select *,find_in_set('59',col1) as rn from test) k 
where substring_index(concat(',',substring_index(col2,',',rn)),',',-1) 
 <'2000'; 

--------- ---------------------

| col1    | col2                |

--------- ---------------------

| 26,59,6 | 1502.5,1690,2276.77 |

| 22,8,59 | 1332.6,2900,1520.77 |

--------- ---------------------

一个巧用字符函数做数据筛选的题,mysql字符 问题描述: 结构: test 有两个字段, 分别是col1和col2,都是字符字段, 里面的内容都是...

my.cnf参数配置实现InnoDB引擎性能优化,my.cnfinnodb

在网上看了无数的my.cnf的配置,大多数提到的配置无外乎这几个:

  1. innodb_buffer_pool_size
  2. innodb_log_file_size
  3. innodb_log_buffer_size
  4. innodb_flush_log_at_trx_commit

然后自己写了两个例子,一个单线程的,一个多线程的来通过改变配置参数来测试是否提高了性能。结果是只有innodb_flush_log_at_trx_commit可以提高性能,对于1,2,3参数无论是开其中某一个,还是三个同时调节都没有影响到测试性能。我想了下,可能是我的测试数据量还不够大造成的,后续有条件了再更大的数据量测试一下这3个参数。

这里详细说一下innodb_flush_log_at_trx_commit:

如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去。
如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file。但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

结果

当设置为0,该模式速度最快,但不太安全,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
当设置为1,该模式是最安全的,但也是最慢的一种方式。在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。
当设置为2,该模式速度较快,也比0安全,只有在操作系统崩溃或者系统断电的情况下,上一秒钟所有事务数据才可能丢失。

注意:由于进程调度策略问题,这个“每秒执行一次 flush(刷到磁盘)操作”并不是保证100%的“每秒”。

结论:innodb_flush_log_at_trx_commit设置为0或者2的时候速度差不多,两者都比设置为1的时候快很多。

这里又让我想到了InnoDB和MyISAM引擎的区别,InnoDB的优势在于并发处理情况下比MyISAM快。而我的线程池数量是根据cpu的线程数来设定的,然后我把线程池的数量设置比cpu线程数大,更大,再大,结果我的测试程序性能又提高了,我醉了,原来是我对线程池的理解太浅薄了。线程池的最优大小

在网上看了无数的my.cnf的配置,大多数提到的配置无外乎这几个: 1. innodb_buffer_pool_size 2...

MySQL5.7.18修改密码的方法,mysql5.7.18修改密码

MySQL 5.7.18中如何修改密码:

1.首先关闭MySQL服务器:

可以在任务管理器中直接关闭,也可以在cmd中关闭mysql :net stop mysql

2.打开安全模式,可以免密码登录:cmd中先跳转至安装目录下:d:                                    

   cd D:Mysqlmysql-5.7.18-winx64bin

然后输入:mysqld --defaults-file="D:Mysqlmysql-5.7.18-winx64my.ini" --console --skip-grant-tables(注意自己修改安装路径)

3.另开一个dos窗口输入mysql -uroot -p,然后无需输入密码直接enter键进入;

4.接下来先打开mysql 数据库:use mysql;

  然后输入 update mysql.user set authentication_string=password('新密码') where user='root';
  接着刷新权限:flush privileges;
  接着退出:quit;

5.打开MYSQL服务器!!!可以手动打开,也可以在cmd中输入net start mysql 打开。

6.接下来就可以使用新密码登录了。

以上所述是小编给大家介绍的MySQL5.7.18修改密码的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对帮客之家网站的支持!

MySQL 5.7.18中如何修改密码: 1.首先关闭MySQL服务器: 可以在任务管理器中直接关闭,也可以在...

本文由ca88手机版登录发布于亚洲城ca88手机版官网,转载请注明出处:cnf参数配置实现InnoDB引擎性能优化,一个巧用字

TAG标签: ca88手机版登录
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。