MySQL 8.0 OCP认证精讲视频、环境和题库之四 多实例启动 缓存、事务、脏读

这篇具有很好参考价值的文章主要介绍了MySQL 8.0 OCP认证精讲视频、环境和题库之四 多实例启动 缓存、事务、脏读。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、配置第一个mysqld服务


    1、编辑选项文件,指定以下选项:
    [mysqld]
        basedir=/mysql80
        datadir=/mysql80/data1
        socket=/mysql80/data1/mysqld.sock
        pid-file=/mysql80/data1/mysqld.pid
        log-error=/mysql80/data1/mysqld.log
    2、初始化
        /mysql80/bin/mysqld --defaults-file=/mysql80/mysqld.cnf --initialize
    3、启动mysqld服务
        /mysql80/bin/mysqld--defaults-file=/mysql80/mysqld.cnf&
    4、查看初始密码,登录,修改出初始密码    
        mysqi -uroot -p'As%&sT9xX/wp' -h127.0.0.1 -P3307
        mysql>alter user user() identifiedby 'Ora_123';
        
    5、创建一个统一的用户,比如 multi_user ,密码相同,并指定shutdown权限
        mysql>create user multi_user@localhost identifiedby 'Ora_123';
        mysql>grant shutdown on *.* to  multi_user@localhost;
    6、 关闭mysqld
        /mysql80/bin/mysqldadmin -u multi_user -h 127.0.0.1 -P 3307 shutdown
    7、 屏蔽掉mysqld选
        #[mysqld]
        #basedir=/mysgl80
        #datadir=/mysql8o/datal
        socket=/mysql80/datal/mysqld.sock
        #pid-file=/mysql80/data1/mysqld.pid
        #log-error=/mysql80/data1/mysqld.log
        #port=3307

二、配置第二个mydqld服务 


    重复上述步骤1-7,指定不同的配置;

三、配置第三个mydqld服务 


    重复上述步骤1-7,指定不同的配置;
    
    #[mysqld]
    #basedir=/mysgl80
    #datadir=/mysql8o/datal
    #socket=/mysql80/datal/mysqld.sock
    #pid-file=/mysql80/data1/mysqld.pid
    #log-error=/mysql80/data1/mysqld.log
    #port=3307
    
    #[mysqld]
    #basedir=/mysql80
    #datadir=/mysql80/data2
    #socket=/mysql80/data2/mysgld.sock
    #pid-file=/mysql80/data2/mysqld.pid
    #log-error=/mysql80/data2/mysqld.log
    #port=3308
    
    #[mysqld]
    #basedir=/mysql80
    #datadir=/mysql80/data3
    #socket=/mysql80/data3/mysgld.sock
    #pid-file=/mysql80/data3/mysqld.pid
    #log-error=/mysql80/data3/mysqld.log
    #port=3309

四、取消前面的#;


    [mysqld]
    basedir=/mysgl80
    datadir=/mysql8o/datal
    socket=/mysql80/datal/mysqld.sock
    pid-file=/mysql80/data1/mysqld.pid
    log-error=/mysql80/data1/mysqld.log
    port=3307
    
    [mysqld]
    basedir=/mysql80
    datadir=/mysql80/data2
    socket=/mysql80/data2/mysgld.sock
    pid-file=/mysql80/data2/mysqld.pid
    log-error=/mysql80/data2/mysqld.log
    port=3308
    
    [mysqld]
    basedir=/mysql80
    datadir=/mysql80/data3
    socket=/mysql80/data3/mysgld.sock
    pid-file=/mysql80/data3/mysqld.pid
    log-error=/mysql80/data3/mysqld.log
    port=3309
    
    [mysql_miti]
     mysqld=/mysql80/bin/mysqld
     mysqladmin=/mysql80/bin/mysqladmin
     user= multi_user

五、修改选项名称

 
    [mysqld1]
    basedir=/mysgl80
    datadir=/mysql8o/datal
    socket=/mysql80/datal/mysqld.sock
    pid-file=/mysql80/data1/mysqld.pid
    log-error=/mysql80/data1/mysqld.log
    port=3307
    
    [mysqld]
    basedir=/mysql80
    datadir=/mysql80/data2
    socket=/mysql80/data2/mysgld.sock
    pid-file=/mysql80/data2/mysqld.pid
    log-error=/mysql80/data2/mysqld.log
    port=3308
    
    [mysqld3]
    basedir=/mysql80
    datadir=/mysql80/data3
    socket=/mysql80/data3/mysgld.sock
    pid-file=/mysql80/data3/mysqld.pid
    log-error=/mysql80/data3/mysqld.log
    port=3309
    
    [mysql_miti]
     mysqld=/mysql80/bin/mysqld
     mysqladmin=/mysql80/bin/mysqladmin
     user= multi_user

六、调用mysqld_multi命令,对多个mysqld服务统一地进行启动,关闭,查看状态 

七、修改bug


     /usr/local/mysql/bin/mysqld_multi有Bug
    # vi /usr/local/mysql/bin/mysqld_multi


    sub defaults_for_group
    {
      my ($group) = @_;

      return () unless $my_print_defaults_exists;

      my $com= join ' ', 'my_print_defaults', @defaults_options, $group;
      my @defaults = `$com`;
      chomp @defaults;
      return @defaults;
    }

    改 my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;
    

八、缓存buffer_pool

join_buffer_size
sort_buffer_size    
mysql> show variables like '%sort%';
    +--------------------------------+---------------------+
    | Variable_name                  | Value               |
    +--------------------------------+---------------------+
    | innodb_disable_sort_file_cache | OFF                 |
    | innodb_ft_sort_pll_degree      | 2                   |
    | innodb_sort_buffer_size        | 1048576             |
    | max_length_for_sort_data       | 4096                |
    | max_sort_length                | 1024                |
    | myisam_max_sort_file_size      | 9223372036853727232 |
    | myisam_sort_buffer_size        | 8388608             |
    | sort_buffer_size               | 262144              |
    +--------------------------------+---------------------+
    8 rows in set (0.00 sec)

mysql> show variables like 'innodb_buffer_pool_size';
    +-------------------------+-----------+
    | Variable_name           | Value     |
    +-------------------------+-----------+
    | innodb_buffer_pool_size | 134217728 |   
    +-------------------------+-----------+
    1 row in set (0.00 sec)

    mysql> 
    #innodb_buffer_pool_size | 134217728 生产环境偏小。
mysql> show variables like '%buffer_pool%';
        +-------------------------------------+----------------+
    | Variable_name                       | Value          |
    +-------------------------------------+----------------+
    | innodb_buffer_pool_chunk_size       | 134217728      |
    | innodb_buffer_pool_dump_at_shutdown | ON             |
    | innodb_buffer_pool_dump_now         | OFF            |
    | innodb_buffer_pool_dump_pct         | 25             |
    | innodb_buffer_pool_filename         | ib_buffer_pool |
    | innodb_buffer_pool_instances        | 1              |
    | innodb_buffer_pool_load_abort       | OFF            |
    | innodb_buffer_pool_load_at_startup  | ON             |
    | innodb_buffer_pool_load_now         | OFF            |
    | innodb_buffer_pool_size             | 134217728      |
    +-------------------------------------+----------------+
    10 rows in set (0.00 sec)
    
buffer_pool的设置
    变量innodb_buffer_pool_size:指定buffer_size的大小 。
    变量innodb_buffer_pool_chunk_size:在调整buffer_pool大小限制时的基本单位;
    当增加或减少innodb_buffer_pool_size时,操作是chunk_size执行的。区块大小由innodb_buffer_pool_Chunk_size配置选项定义,默认值为128M=134217728b。
    
    innodb_buffer_pool_size大小必须始终等于或等于innodb_Buffer_pool_chunk_size*innodb_Buffer_pool_instances的倍数。
    mysql> show variables like '%innodb_buffer_pool_instances%';
    +------------------------------+-------+
    | Variable_name                | Value |
    +------------------------------+-------+
    | innodb_buffer_pool_instances | 1     |
    +------------------------------+-------+
    1 row in set (0.00 sec)
    
    如果将innodb_buffer_pool_size配置为不等于innodb_buffer_pool_chunk_size*innodb_uffer_pool_instances或其整数倍的值,
    则缓冲池大小将自动调整为等于innodd_buffer_pool_chunk_size*innodb_pool_instances的值或其倍数。
    假设
    innodb_buffer_pool_size设置为8G,innodl_buffer_poor_instances设置为16。innodb_buffer_pool_chunk_size为128M,为默认值。
    可以判断
     innodd_buffer_pool_chunk_size*innodb_pool_instances=128M*16=  2^7*2^4=2*2^10=2G
    ( innodb_buffer_pool_size=8)/(innodd_buffer_pool_chunk_size*innodb_pool_instances=2G)=4倍
    因此innodb_buffer_pool_size-8G是有效值

    8G是一个有效的innodb_buffer_pool_size值,因为8G是innodb_buffer_pool_instance=16*innodb_uffer_pool_chunk_size=128M的倍数,即2G。
    
    
    再假设
    在本例中,innodb_buffer_pool_size设置为9G(刚才是8G),innodl_buffer_pool_instances设置为16。innodb_buffer_pool_chunk_size为128M,为默认值。
    innodb_buffer_poor_instances*innodb_buffer_pool_chunk_size=16*128M=2G ,9G/2g=4.5倍(访问时跨chunk访问,所以慢)
    因此mysql向上取整调整为10G。
    
    innodb_buffer_pool_instances    其值为>=0,<=64
    innodb_buffer_pool被划分为的区域数。对于innodb_buffer_pool在1GB 字节范围内的系统,将缓冲池划分为单独的实例,
    可以通过减少不同线程读取和写入缓存页面时的争用来提高并发性。此选项仅在将innodb_buffer_pool_size设置为1GB或更大时生效。
    缓冲池的总大小在所有缓冲池中划分。为了获得最佳效率,请指定innodb_buffer_pool_instances和innodb_buffer_pool_size的组合,以便每个缓冲池实例至少为1GB。
    
    On all other platforms, the default value is 8 when innodb_buffer_pool_size is greater than or equal to 1GB. Otherwise, the default is 1.
    
    
mysql> show variables like 'innodb_buffer_pool_size';
    +-------------------------+-----------+
    | Variable_name           | Value     |
    +-------------------------+-----------+
    | innodb_buffer_pool_size | 134217728 |
    +-------------------------+-----------+
    1 row in set (0.00 sec)

    mysql> 

    mysql> select  134217728 /1024/1024;
    +----------------------+
    | 134217728 /1024/1024 |
    +----------------------+
    |         128.00000000 |   ###128MB
    +----------------------+
    1 row in set (0.00 sec)

    mysql> 
mysql> show variables like 'innodb_buffer_pool_chunk_size';
    +-------------------------------+-----------+
    | Variable_name                 | Value     |
    +-------------------------------+-----------+
    | innodb_buffer_pool_chunk_size | 134217728 |
    +-------------------------------+-----------+
    1 row in set (0.00 sec)
    
mysql> show variables like '%innodb_buffer_pool_instances%';
+------------------------------+-------+
| Variable_name                | Value |
+------------------------------+-------+
| innodb_buffer_pool_instances | 1     |
+------------------------------+-------+
1 row in set (0.00 sec)

mysql> 

 实践

MySQL :: MySQL 8.0 Reference Manual :: 15.8.3.1 Configuring InnoDB Buffer Pool Size

变量innodb buffer pool size:指定buffer poole的大小
变量innodb_buffer_pool_chunk_size:在洞整buffer pool大小时的基本单位
变量innodb buffer pool_instances:把innodb buffer分成若干部分,分别管理,仅当innodb buffer_pool size的值大于1GB时生效
实验:buffer pool的设道
1、查看上述变量的值
2、通过set命令将innodb buffer pool size设置为129M,查看实际大小
3、修改选项文件,指定以下选项:
    innodb buffer pool chunk size=64M
    innodb_buffer_pool_size=256M
    重新启动nysqld
4、   通过set命令修改innodb buffer pool size为300M,查看实际大小
    

处理:

1 、

mysql> show variables like 'innodb_buffer_pool_size%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+
1 row in set (0.01 sec)

mysql> show variables like 'innodb_buffer_pool_chunk%';
+-------------------------------+-----------+
| Variable_name                 | Value     |
+-------------------------------+-----------+
| innodb_buffer_pool_chunk_size | 134217728 |
+-------------------------------+-----------+
1 row in set (0.00 sec)

mysql> select 134217728/1024/1024 ;
+---------------------+
| 134217728/1024/1024 |
+---------------------+
|        128.00000000 |
+---------------------+
1 row in set (0.00 sec)

2、

mysql> select 129*1024*1024;
+---------------+
| 129*1024*1024 |
+---------------+
|     135266304 |
+---------------+
1 row in set (0.00 sec)

mysql> set global innodb_buffer_pool_size=135266304;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> show variables like 'innodb_buffer_pool_size%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 268435456 |
+-------------------------+-----------+
1 row in set (0.00 sec)

mysql> select 268435456/1024/1024;
+---------------------+
| 268435456/1024/1024 |
+---------------------+
|        256.00000000 |     ##预期129MB  ,实际256MB,是向上取整数倍速128MB
+---------------------+
1 row in set (0.00 sec)
 

3、

 systemctl stop  mysql

 vi /etc/my.cnf
 

[mysqld]
datadir=/data/mysql/data/
socket=/data/mysql/mysql.sock

innodb_buffer_pool_chunk_size=64M
innodb_buffer_pool_size=256M
systemctl start   mysql
 

mysql> show variables like 'innodb_buffer_pool_chunk_size' ;
+-------------------------------+----------+
| Variable_name                 | Value    |
+-------------------------------+----------+
| innodb_buffer_pool_chunk_size | 67108864 |
+-------------------------------+----------+
1 row in set (0.01 sec)

mysql> show variables like 'innodb_buffer_pool_size' ;
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 268435456 |
+-------------------------+-----------+
1 row in set (0.00 sec)

4、

mysql> set global innodb_buffer_pool_size=314572800;

mysql> show variables  like 'innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 335544320 |
+-------------------------+-----------+
1 row in set (0.00 sec)

mysql> select 335544320/1024/1024;
+---------------------+
| 335544320/1024/1024 |
+---------------------+
|        320.00000000 |     
+---------------------+
1 row in set (0.00 sec)

mysql> 
# /etc/my.cnf 中的chunk_size=64MB,300MB/64MB ~4.6875 ;向上取整=5 倍

所以 64MB*5=320MB;

九、脏读及刷新

变量innodb_max_dirty_pages_pct:
    innoDB在后台执行某些任务,包括从缓冲池中清除脏页。脏页是指那些已被修改但尚未写入磁盘上的数据文件的页。
    在MySQL 8.0中,缓冲池刷新是由页面清理线程执行的。页面清理线程的数量由innodb_page_cleaners变量控制,该变量的默认值为4。
    但是,如果页面清理线程的数量超过缓冲池实例的数量,innodb_page_cleaners会自动设置为与innodb_buffer_pool_instances相同的值。
    当脏页的百分比达到innodb_max_dirty_pages_pct_lwm变量定义的低水位标记值时,启动缓冲池刷新。默认的低水位标记是缓冲池页面的10%。innodb_max_dirty_pages_pct_lwm值为0将禁用这种早期刷新行为。
    innodb_max_dirty_pages_pct_lwm阈值的目的是控制缓冲池中脏页的百分比,并防止脏页的数量达到innodb_ax_dirty_pages_pct变量定义的阈值,该变量的默认值为90。如果缓冲池中脏页面的百分比达到InnoDB_max_dirty_pages_pct阈值,InnoDB会主动刷新缓冲池页面。
    配置innodb_max_dirty_pages_pct_lwm时,该值应始终低于innodb_ax_dirty_pages_pct值。


变量innodb_flush_neighbors:
    允许对缓冲池刷新行为进行微调:
innodb_flush_neighbors变量定义从缓冲池中刷新页面是否也会刷新同一范围中的其他脏页面。
默认设置0:
    将禁用innodb_flush_neighbors。相同范围内的脏页不会被刷新。对于寻道时间不是重要因素的非旋转存储(SSD)设备,建议使用此设置。
设置为1:
    将在同一范围内刷新连续的脏页。
设置为2:
    会在同一范围内刷新脏页。
    
innodb_LRU_scan_depth变量为每个缓冲池实例指定页面清理器线程在缓冲池LRU列表中搜索脏页面的深度。这是页面清理线程每秒执行一次的后台操作。
innodb_flush_neighbors和innodb_LRU_scan_depth变量主要用于写密集型工作负载。
小于默认值的设置通常适用于大多数工作负载。明显高于必要值的值可能会影响性能。只有在典型工作负载下有空闲I/O容量时,才考虑增加值。
相反,如果写密集型工作负载使I/O容量饱和,请降低该值,尤其是在缓冲池很大的情况下。
 

十、事务

MySQL :: MySQL 8.0 Reference Manual :: 13.3.7 SET TRANSACTION Statement

事务(transaction):一系列SQL的集合,整体执行;要 么全部成功,要么全部失败;
事务的属性:ACID
    A:原子性
    C: 一致性
    I:独立性、并发事务,隔离性
    D:持久性
事务的处理:
    commit;
    rollback;

事务的形式:
    1、多条DML的集合  insert  update delete  需要手工提交
    2、单条DDL        create  drop  alter  truncate 立即提交
    3、单条DCL        grant revoke  

变量autocommit:仅针对第一种事务

start TRANSACTION
update...
insert ...
delete ...
commit/rollback文章来源地址https://www.toymoban.com/news/detail-724434.html

到了这里,关于MySQL 8.0 OCP认证精讲视频、环境和题库之四 多实例启动 缓存、事务、脏读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 让ChatGPT做一下MySQL 8.0 OCP(1Z0-908)的真题,我松了一口气

    MySQL OCP分成中文和英文两种,Oracle OCP只有英文考试,这里我们用MySQL 8.0 OCP(1Z0-908)的中文真题测试一下ChatGPT,看看ChatGPT能否获得MySQL OCP的认证,用这种方法判断ChatGPT会不会代替我们人类DBA的工作。 1报告在MySQL服务器上运行的所有当前连接,ChatGPT准确地列出了3个: SELECT

    2024年02月04日
    浏览(51)
  • MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点6:MySQL Enterprise Monitor之Query Analyzer

    【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) MySQL Enterprise Monitor是MySQL官方提供的一款监控和管理MySQL数据库的工具。 其功能之一包括MySQL Query Analyzer工具,通过MySQL Query Analyzer可以帮助用户识别慢查询和瓶颈,监视在M

    2024年02月16日
    浏览(41)
  • MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点1:二进制日志文件(Binary log)

    【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) MySQL中有多种类型的日志文件,这些日志可用于故障排除、性能调整和审计等目的,帮助找出正在发生的活动。 常见的日志文件包括: 日志类型 写入日志的信息 错误日志(

    2024年02月16日
    浏览(54)
  • MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点4:慢速查询日志(slow query log)

    慢速查询日志(slow query log) 慢速查询日志(slow query log)主要用于查找超过指定时间、执行时间很长的SQL。 默认情况下这个功能是无效的,所以要启用慢速查询日志需要设置slow_query_log 为1(ON)。 慢速查询日志(slow query log)相关参数 下面我们看看慢速查询日志(slow query l

    2023年04月22日
    浏览(66)
  • 解析MySQL 8.0 OCP(1Z0-908)考试中一道大部分同学都会做错的题目(文末附录像)

    一个用户有下面的权限: jsmith可以执行哪两条SQL语句? A)UPDATE world.country SET Name=\\\'all; B)UPDATE world.Country SET Name=‘new’ WHERE Name=\\\'old; C)UPDATE world.country SET Name=‘one’ LIMIT1; D)UPDATE world.country SET Name=‘first’ ORDER BY Name LIMIT 1; E)UPDATE world.country SET Name=CONCAT(‘New’,Name); 我们看到这

    2024年02月08日
    浏览(39)
  • 华为认证HCIA-HCIP-HCIEdatacom题库解析+机构视频+实验

    题库包含有2023年最新HCIA-datacom题库、HCIP-datacom题库,HCIE-datacom题库, 云计算HCIA,HCIP题库,云服务HCIA,HCIP题库,华为存储HCIP题库,华为安全HCIP题库 ,学习笔记,视频,各种实验 目前最热门的华为认证是数通HCIA-datacom考试代码为H12-811和HCIP-datacom考试代码(H12-821、H12-831)。

    2024年02月16日
    浏览(44)
  • 「CISP题库精讲」CISP题库习题解析精讲20道

    本篇主要对CISP教材第九章《计算环境安全》的一些习题进行讲解,包括20道题,这里只是部分习题,针对第九章可能会多写几章的内容,如果我发布的这些习题里面没有你想找的那道题,你也可以直接私信我,我加载文章中。 Apache HTTP Server(简称Apache)是一个开放源码的We

    2024年04月13日
    浏览(39)
  • 五.实战软件部署 4-5MYSQL 5.7版本在ubuntu(WSL环境)安装&MYSQL 8.0版本在ubuntu(WSL环境)安装

    目录 五.实战软件部署 4-MYSQL 5.7版本在ubuntu(WSL环境)安装 安装 1-下载apt仓库文件 2-配置apt仓库 3-更新apt仓库的信息 4-检查是否成功配置mysql5.7的仓库 5-安装mysql5.7 6-启动mysql 7-对mysql进行初始化 1-输入密码 2-是否开启密码验证插件,如果需要增强密码安全性,输入y并回车,不需

    2024年02月22日
    浏览(41)
  • 你真的了解MySQL OCP吗?其实有两种MySQL OCP

    大家可能都知道MySQL OCP认证,但你知道吗MySQL OCP其实是分两种,以MySQL 8.0为例, 一种是管理方向,叫:Oracle Certified Professional, MySQL 8.0 Database Administrator 另一个是开发方向的,MySQL 8.0 Database Developer Oracle Certified Professional 关于博主,姚远: Oracle ACE(Oracle和MySQL数据库方向)

    2024年02月13日
    浏览(37)
  • 云计算(五)—— OpenStack基础环境配置与API使用,使用cURL命令获取实例列表,理解OpenStack的身份认证和API请求流程。使用openstack命令创建Fedora虚拟机实例

    使用cURL命令获取实例列表 理解OpenStack的身份认证和API请求流程。 (1)复习OpenStack的认证与API请求流程的相关内容。 (2)熟悉cURL命令基本用法。 参照任务二中任务实现进行操作。 若demo用户已修改密码,则需要先把/root/keystonerc_demo文件中的password修改为你修改的密码 。 (

    2024年04月26日
    浏览(96)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包