美文网首页
Mysql-服务配置问题

Mysql-服务配置问题

作者: Joah_l | 来源:发表于2019-09-29 11:56 被阅读0次
    • 一, 请分析一个 Group By 语句的异常问题原因 ???

      • sql_mode: 配置 mysql 处理 sql语句的方式; show variables like 'sql_mode';

        • set [session/global/presist(8.0v)] sql_mode =xxxx``

        • [mysqld 配置文件中配置]: sql_mode = value1, value2, value3

      • sql_mode:

        • noly_full_group_by: 对 group_by 聚合操作, 如果出现在 select 中的列, having 或者 order by 子句的非聚合列, 没有在 group by 中出现, 那么这个 sql 的语法检查报错

        • ansi_quotes 禁止使用双引号来引用字符串, 使用单引号表示

        • real_as_float: real 类型作为 float

        • pipes_as_concat: 将 || 视为字符串的连接操作符, 而非 运算符

        • strict_trans_tables/strict_all_tables : 在事务存储引擎/所有存储引擎上启用严格模式, 那么这个 sql 语法检查会报错, 宽松的模式下; 在 insert 的时候会出现隐式的转换,

        • error_for_division_by_zero: 不允许 0 作为除数
          show warnings;

        • no_auto_create_user: 在用户不存在时, 不允许 grant 语句自动建立, 在 8.0 之后设置为默认

        • no_zero_in_date/no_zero_date: 日期数据内/日期数据不能含有 0, (严格模式下)

        • no_engine_substitution: 当指定存储引擎不可用时报错(严格模式下)

    • 二, 如何比较系统运行配置文件和配置文件中的配置是否一致呢 ???

      • 使用 set 命令配置动态参数, 造成了运行配置文件和配置文件中的不一致

        • set [session | @@session.] system_var_name = expr: 会改变当前的 session 连接

        • set [global | @@global.] system_var_name = expr: 对当前的 session 不受影响, 重启之后会变化

          1. show global variables like 'wait_timeout'

          2. set global wait_timeout=300

        • 8.0v 之后 set [persist | @@persist.] system_var_name = expr: 会生成 mysqld-auto.cnf 文件; 等 mysql 重启的时候;会加载这个文件来同步动态参数

        • 如果上面出现动态配置之后, 下次mysql 重启的时候, 会导致不一致, 必须在 mysql config 中同步配置, 才会保持一致的情况

      • 使用 pt-config-diff 工具比较配置文件差异

        pt-config-diff u=root, p= h=localhost /etc/my.cnf 比较差异

    • 三, 举几个 Mysql 中的关键性能参数 ???

      常用的性能参数;

      1. max_connections: 设置 mysql 允许访问的最大连接数(不要设置的太大, 容易引起内存溢出)

      2. interactive_timeout: 设置交互的连接的 timeout 时间

      3. wait_timeout: 设置非交互连接的 timeout 的时间

      4. max_allowed_packet: 控制 mysql 可以接收的数据包的大小(如果是主从复制)

      5. sync_binlog: 表示每写多少次缓冲会向磁盘同步一次 binlog, master 设置为 1;

      如下五项为每个连接线程设置的; 如果有100个连接, 那么就是会是 100 陪的大小

      1. sort_buffer_size: 表示每个线程使用的排序缓存区的大小(小心设置)

      2. join_buffer_size: 设置每个回话所事宜的连接缓冲的大小(不要设置太大)

      3. read_buffer_size: 指定了当对一个 myisam 进行表扫描时所分配的读缓存池大小(比如需要临时表)

      4. read_rnd_buffer_size: 设置控制索引的缓冲区的大小

      5. binlog_cache_size: 设置每个会话用于缓存未提交的事务缓存大小

      存储引擎相关

      1. innodb_flush_log_at_trx_commit: 0 => 每秒进行一次日志的磁盘刷新, 1 => 每次事务提交会刷新, 2 => 每次事务提交,每秒刷新

      2. innodb_buffer_pool_size: 设置 innodb 缓冲池的大小, 应为系统的内存的 75%;

      3. innodb_buffer_pool_instances: 实例个数, 总缓冲大小/实例个数

      4. innodb_file_per_table: 设置每个表独立使用一个表空间文件

    相关文章

      网友评论

          本文标题:Mysql-服务配置问题

          本文链接:https://www.haomeiwen.com/subject/etdructx.html