您好,欢迎来到聚文网。 登录 免费注册
MySQL应用实战与性能调优

MySQL应用实战与性能调优

  • 出版社: 机械工业
  • 作者: 张文亮 编著
  • 商品条码: 9787111700982
  • 版次: 1
  • 开本: 16开
  • 页数: 290
  • 出版年份: 2022
  • 印次: 1
定价:¥79 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
内容简介
MySQL是流行的关系型数据库管理系统之一。书中从数据设计和数据库的基本使用开始介绍,逐步深入一些复杂的内容,包括连接查询的使用、子查询、字符串函数、数字函数、日期函数以及新版本的窗口函数,还包括存储过程、游标、创建高效的索引以及SQL优化技巧等。通过大量的示例应用,系统地讲述读者应该掌握的知识,以及对于数据库的优化,其中包括MySQL的架构以及MySQL 8的新特征,也包含MySQL基准测试和性能剖析,数据库软硬件性能优化,内存优化,复制、备份和恢复,高可用与高可扩展性,尤其对于MySQL中各种锁机制以及MySQL的MVCC的核心原理都一一通过理论和大量的示例进行解析,以方便读者理解。
目录
前言<br/>第1章 MySQL入门和容器化部署 1<br/>1.1 MySQL介绍 1<br/>1.2 MySQL 8安装和升级 2<br/>1.2.1 安装前说明 2<br/>1.2.2 在Windows上安装MySQL 2<br/>1.2.3 在Linux上安装MySQL 8<br/>1.2.4 在Docker上安装MySQL 12<br/>第2章 什么样的数据库设计才是优秀的 17<br/>2.1 关系型数据库设计理论 17<br/>2.2 连接数据库和基本信息查询 21<br/>2.2.1 连接数据库 21<br/>2.2.2 基本信息查询 21<br/>2.3 数据库和表 25<br/>2.3.1 创建数据库 26<br/>2.3.2 创建表 27<br/>2.4 数据类型和类型异常处理 28<br/>2.4.1 数字数据类型 28<br/>2.4.2 日期和时间数据类型 32<br/>2.4.3 字符串数据类型 33<br/>2.4.4 JSON数据类型 39<br/>第3章 SQL语句全面解析和应用实战 44<br/>3.1 数据库操作 44<br/>3.2 数据表操作 46<br/>3.2.1 创建数据表 46<br/>3.2.2 数据表的修改与删除 48<br/>3.2.3 约束 49<br/>3.3 数据查询 50<br/>3.4 数据插入 51<br/>3.5 where(筛选) 52<br/>3.6 and和or(与和或) 54<br/>3.7 between(范围查找) 55<br/>3.8 distinct(去重关键字) 56<br/>3.9 update(修改或更新) 56<br/>3.10 delete(删除) 58<br/>3.11 like(模糊匹配) 59<br/>3.12 order by(排序) 61<br/>3.13 group by(分组) 62<br/>3.14 with rollup(分组统计再统计) 63<br/>3.15 having(分组筛选) 64<br/>3.16 union和union all(组合查询) 64<br/>3.17 join(连接查询) 67<br/>3.17.1 inner join(内连接) 68<br/>3.17.2 left join(左连接) 69<br/>3.17.3 right join(右连接) 70<br/>3.18 in和not in(多关键字筛选) 71<br/>3.19 exists和not exists(是否返回结果集) 72<br/>3.20 复制表 73<br/>3.21 临时表 74<br/>第4章 MySQL函数大全和高效率汇总统计实战 76<br/>4.1 MySQL字符串函数 76<br/>4.1.1 character_length(s):返回字符串长度 76<br/>4.1.2 concat(s1,s2,(,sn):字符串合并 77<br/>4.1.3 format(x,n):数字格式化 77<br/>4.1.4 lpad(s1,len,s2):字符串填充 77<br/>4.1.5 field(s,s1,s2,():返回字符串出现的位置 77<br/>4.1.6 insert(s1,x,len,s2):替换字符串 78<br/>4.1.7 lcase(s):把字符串中的所有字母转换为小写字母 78<br/>4.1.8 ucase(s):把字符串中的所有字母转换为大写字母 78<br/>4.1.9 strcmp(s1,s2):比较字符串大小 78<br/>4.1.10 replace(s,s1,s2):字符串替换 79<br/>4.1.11 position(s1 in s):获取子字符串在字符串中出现的位置 79<br/>4.1.12 md5(s):字符串加密 79<br/>4.1.13 inet_aton(ip):把IP地址转换为数字 80<br/>4.1.14 inet_ntoa (s):把数字转换为IP地址 80<br/>4.2 MySQL数字函数 80<br/>4.2.1 ceil(x):返回不小于x的最小整数 80<br/>4.2.2 ceiling(x):返回不小于x的最小整数 80<br/>4.2.3 floor(x):返回不大于x的最大整数 81<br/>4.2.4 round(x):返回最接近x的整数 81<br/>4.2.5 max(expression):求最大值 81<br/>4.2.6 min(expression):求最小值 82<br/>4.2.7 sum(expression):求总和 82<br/>4.2.8 avg(expression):求平均值 83<br/>4.2.9 count(expression):求总记录数 83<br/>4.3 MySQL日期函数 84<br/>4.3.1 adddate(d,n):返回指定日期加上指定天数后的日期 84<br/>4.3.2 addtime(t,n):返回指定时间加上指定时间后的时间 84<br/>4.3.3 curdate():返回当前日期 85<br/>4.3.4 datediff(d1,d2):返回两个日期相隔的天数 85<br/>4.3.5 dayofyear(d):返回指定日期是本年的第几天 85<br/>4.3.6 extract(type from d):根据对应格式返回日期 85<br/>4.3.7 now():返回当前日期和时间 86<br/>4.3.8 quarter(d):返回日期对应的季度数 87<br/>4.3.9 second(t):返回指定时间中的秒数 87<br/>4.3.10 timediff(time1, time2):计算时间差 87<br/>4.3.11 date(t):从指定日期时间中提取日期值 88<br/>4.3.12 hour(t):返回指定时间中的小时数 88<br/>4.3.13 time(expression):提取日期时间参数中的时间部分 88<br/>4.3.14 time_format(t,f):根据表达式显示时间 88<br/>4.3.15 year(d):返回指定日期的年份 89<br/>4.4 MySQL高级函数 89<br/>4.4.1 cast(x as type):数据类型转换 89<br/>4.4.2 coalesce(expr1, (, exprn):返回第一个非空表达式 89<br/>4.4.3 if(expr,v1,v2):表达式判断 90<br/>4.4.4 ifnull(v1,v2):null替换 90<br/>4.4.5 isnull(expression):判断表达式是否为null 90<br/>4.4.6 nullif(expr1, expr2):字符串相等则返回null 91<br/>4.4.7 last_insert_id():返回最近生成的自增ID 91<br/>4.4.8 case expression:表达式分支 92<br/>4.5 MySQL over():窗口函数汇总分析 92<br/>4.5.1 row _number():顺序排名函数 94<br/>4.5.2 rank():跳级排名函数 95<br/>4.5.3 dense_rank():不跳级排名函数 96<br/>4.5.4 lag(expr,n):前分析函数,返回前n行的值 96<br/>4.5.5 lead(expr,n):后分析函数,返回后n行的值 98<br/>4.5.6 first_value(expr):头尾函数,返回第一个值 98<br/>4.5.7 last_value(expr):头尾函数,返回最后一个值 99<br/>4.5.8 nth_value(expr,n):从结果集中的第n行获取值 101<br/>4.5.9 ntile(n):数据集分桶 102<br/>4.5.10 sum() over(expr):聚合求和 103<br/>4.5.11 avg() over(expr):聚合求平均值 104<br/>4.5.12 max() over(expr):聚合求最大值 104<br/>4.5.13 min() over(expr):聚合求最小值 105<br/>4.5.14 count() over(expr):聚合总条数 105<br/>第5章 MySQL大表快速优化诀窍 107<br/>5.1 分区 107<br/>5.1.1 分区类型 108<br/>5.1.2 范围分区 108<br/>5.1.3 列表分区 111<br/>5.1.4 列分区 113<br/>5.1.5 哈希分区 121<br/>5.1.6 键分区 124<br/>5.1.7 子分区 125<br/>5.1.8 MySQL分区对null的处理 126<br/>5.1.9 分区管理 132<br/>5.1.10 分区的限制 138<br/>5.2 视图 142<br/>5.3 存储过程 145<br/>5.3.1 存储过程的创建和调用 145<br/>5.3.2 带参数的存储过程 147<br/>5.3.3 变量 150<br/>5.3.4 注释 151<br/>5.3.5 存储过程的修改和删除 152<br/>5.3.6 存储过程的控制语句 152<br/>5.4 游标 154<br/>5.5 字符集和排序规则 157<br/>5.5.1 MySQL中的字符集和排序规则 157<br/>5.5.2 列字符集和排序规则 160<br/>5.5.3 使用collate指定查询排序规则 160<br/>第6章 MySQL创建高效的索引 162<br/>6.1 索引 162<br/>6.2 创建索引的指导原则 165<br/>6.3 B-Tree索引和哈希索引的比较 166<br/>6.4 高效SQL必备分析利器的执行计划分析 167<br/>6.5 高效SQL的索引检索原理 183<br/>6.5.1 主键索引 183<br/>6.5.2 普通索引 187<br/>6.5.3 复合索引 189<br/>6.6 索引的使用技巧与SQL优化实战 191<br/>6.6.1 避免回表查询 191<br/>6.6.2 尽量使用联合索引 191<br/>6.6.3 索引条件下推优化 192<br/>6.6.4 避免全表扫描 192<br/>6.6.5 负向查询不能使用索引 192<br/>6.6.6 前导模糊查询不能使用索引 193<br/>6.6.7 在字段上计算不能命中索引 193<br/>6.6.8 查询条件类型不一致不能命中索引 193<br/>6.6.9 明确知道只返回一条记录可以使用limit进行限制 193<br/>6.6.10 limit分页优化 193<br/>6.6.11 使用表内连接进行limit分页优化 194<br/>6.6.12 union all优化(基于MySQL 8.0+) 194<br/>6.6.13 or优化(基于MySQL 8.0+) 194<br/>6.6.14 count(*)优化 194<br/>6.6.15 on duplicate key update优化 195<br/>第7章 InnoDB存储引擎揭秘和优化实战 196<br/>7.1 InnoDB存储引擎实践 198<br/>7.2 InnoDB和ACID模型 198<br/>7.2.1 MySQL事务处理的两种方法 199<br/>7.2.2 InnoDB MVCC 201<br/>7.3 锁机制 201<br/>7.3.1 表级锁 201<br/>7.3.2 行级锁 202<br/>7.3.3 共享锁 202<br/>7.3.4 排他锁 203<br/>7.3.5 意向锁 205<br/>7.3.6 乐观锁 205<br/>7.3.7 悲观锁 206<br/>7.3.8 间隙锁 206<br/>7.3.9 记录锁 208<br/>7.3.10 临键锁 208<br/>7.3.11 死锁 209<br/>7.4 事务隔离级别 209<br/>7.5 InnoDB内存结构解析和优化实战 213<br/>7.5.1 缓冲池原理和优化 213<br/>7.5.2 变更缓冲区原理与优化 224<br/>7.5.3 自适应哈希索引原理与配置 226<br/>7.5.4 日志缓冲区 226<br/>7.6 InnoDB表实战调优 227<br/>7.6.1 优化InnoDB表的存储 227<br/>7.6.2 InnoDB事务处理优化 229<br/>7.6.3 InnoDB只读事务优化 229<br/>7.6.4 优化InnoDB重做日志 229<br/>7.6.5 InnoDB磁盘I/O优化 234<br/>7.6.6 配置InnoDB线程并发数量 234<br/>7.6.7 配置InnoDB的I/O读写后台线程数量 235<br/>7.6.8 InnoDB的并行读线程数量 235<br/>7.6.9 InnoDB的I/O容量 236<br/>第8章 MySQL基准测试数据的备份与还原 237<br/>8.1 基准测试 237<br/>8.1.1 Sysbench介绍 238<br/>8.1.2 Sysbench测试实操 239<br/>8.2 备份 243<br/>8.3 还原 244<br/>8.3.1 利用source命令导入数据库 244<br/>8.3.2 利用load data导入数据 244<br/>8.3.3 利用mysqlimport导入数据 244<br/>第9章 MySQL高性能架构的读写分离 245<br/>9.1 读写分离 245<br/>9.2 MySQL主从复制 246<br/>9.3 MySQL主从复制架构的搭建 247<br/>9.3.1 配置主节点 247<br/>9.3.2 配置从节点 248<br/>9.3.3 主从复制 249<br/>附录 常用函数速查表 251<br/>A.1 MySQL字符串函数 251<br/>A.1.1 ASCII(s):返回字符串的ASCII码 251<br/>A.1.2 char_length(s):返回字符串长度 251<br/>A.1.3 character_length(s):返回字符串长度 252<br/>A.1.4 concat(s1,s2,(,sn):字符串合并 252<br/>A.1.5 concat_WS(x, s1,s2,(,sn):字符串合并 252<br/>A.1.6 field(s,s1,s2,():返回字符串出现的位置 253<br/>A.1.7 find_in_set(s1,s2):返回字符串的匹配位置 253<br/>A.1.8 format(x,n):数字格式化 253<br/>A.1.9 insert(s1,x,len,s2):替换字符串 253<br/>A.1.10 locate(s1,s):获取字符串出现的位置 254<br/>A.1.11 lcase(s):把字符串中的所有字母转换为小写字母 254<br/>A.1.12 left(s,n):返回字符串的前n个字符 254<br/>A.1.13 lower(s):把字符串中的所有字母转换为小写字母 254<br/>A.1.14 lpad(s1,len,s2):字符串填充 255<br/>A.1.15 ltrim(s):去掉字符串开始处的空格 255<br/>A.1.16 mid(s,n,len):从字符串的指定位置截取子字符串 255<br/>A.1.17 replace(s,s1,s2):字符串替换 256<br/>A.1.18 reverse(s):字符串反转 256<br/>A.1.19 right(s,n):返回字符串后n个字符 256<br/>A.1.20 rpad(s1,len,s2):在字符串中填充相应字符串 256<br/>A.1.21 position(s1 in s):获取子字符串在字符串中出现的位置 257<br/>A.1.22 repeat(s,n):字符串重复拼接 257<br/>A.1.23 substring_index(s, s2, number):返回字符串中第n个出现的子字符串 257<br/>A.1.24 trim(s):去掉字符串开始和结尾处的空格 258<br/>A.1.25 ucase(s):把字符串中的所有字母转换为大写字母 258<br/>A.1.26 rtrim(s):去掉字符串结尾处的空格 258<br/>A.1.27 strcmp(s1,s2):比较字符串的大小 258<br/>A.1.28 substr(s, start, length):从字符串中截取子字符串 259<br/>A.1.29 substring(s, start, length):从字符串中截取子字符串 259<br/>A.1.30 md5(s):字符串加密 259<br/>A.1.31 inet_aton (ip):把IP地址转换为数字 260<br/>A.1.32 inet_ntoa(s):把数字转换为IP地址 260<br/>A.2 MySQL数字函数 260<br/>A.2.1 abs(x):求绝对值 260<br/>A.2.2 sign(x):返回数字符号 260<br/>A.2.3 acos(x):求反余弦值 261<br/>A.2.4 asin(x):求反正弦值 261<br/>A.2.5 atan (x):求反正切值 261<br/>A.2.6 sin(x):求正弦值 262<br/>A.2.7 cos(x):求余弦值 262<br/>A.2.8 cot(x):求余切值 262<br/>A.2.9 tan(x):求正切值 262<br/>A.2.10 degrees(x):将弧度转换为角度 263<br/>A.2.11 radians(x):将角度转换为弧度 263<br/>A.2.12 exp(x):返回e的x次方 263<br/>A.2.13 ceil(x):返回不小于x的最小整数 264<br/>A.2.14 ceiling(x):返回不小于x的最小整数 264<br/>A.2.15 floor(x):返回不大于x的最大整数 264<br/>A.2.16 round(x):返回最接近x的整数 264<br/>A.2.17 greatest(expr1,expr2, ():返回列表中的最大值 265<br/>A.2.18 least(expr1, expr2, expr3, ():返回列表中的最小值 265<br/>A.2.19 ln(x):求自然对数 265<br/>A.2.20 log(x)或log(base, x):求对数 266<br/>A.2.21 log10(x):求以10为底的对数 266<br/>A.2.22 log2(x):求以2为底的对数 266<br/>A.2.23 max(expression):求最大值 267<br/>A.2.24 min(expression):求最小值 267<br/>A.2.25 sum(expression):求总和 268<br/>A.2.26 avg(expression):求平均值 268<br/>A.2.27 count(expression):求总记录数 268<br/>A.2.28 mod(x,y):求余数 269<br/>A.2.29 pow(x,y):求x的y次方 269<br/>A.2.30 sqrt(x):求平方根 269<br/>A.2.31 rand():求随机数 270<br/>A.2.32 truncate(x,y):返回保留到小数点后n位的值 270<br/>A.3 MySQL日期函数 270<br/>A.3.1 adddate(d,n):返回指定日期加上指定天数后的日期 270<br/>A.3.2 addtime(t,n):返回指定时间加上指定时间后的时间 271<br/>A.3.3 curdate():返回当前日期 271<br/>A.3.4 current_date():返回当前日期 271<br/>A.3.5 current_time():返回当前时间 272<br/>A.3.6 current_timestamp():返回当前日期和时间 272<br/>A.3.7 curtime():返回当前时间 272<br/>A.3.8 date(t):从指定日期时间中提取日期值 272<br/>A.3.9 datediff(d1,d2):返回两个日期相隔的天数 273<br/>A.3.10 date_add(d, interval expr type):给指定日期加上一个时间段后的日期 273<br/>A.3.11 date_format(d,f):根据表达式显示日期 273<br/>A.3.12 date_sub(date, interval expr type):从当前日期减去指定的时间间隔 274<br/>A.3.13 day(d):返回日期值中的日值 274<br/>A.3.14 dayname(d):返回指定日期是星期几 274<br/>A.3.15 dayofmonth(d):返回指定日期是本月的第几天 275<br/>A.3.16 dayofweek(d):返回指定日期是所在星期的第几天 275<br/>A.3.17 dayofyear(d):返回指定日期是本年的第几天 275<br/>A.3.18 extract (type from d):根据对应格式返回日期 275<br/>A.3.19 from_days(n):返回元年加n天的日期 277<br/>A.3.20 hour(t):返回指定时间中的小时数 277<br/>A.3.21 last_day(d):返回给定日期所在月份的最后一天 277<br/>A.3.22 localtime():返回当前日期和时间 277<br/>A.3.23 localtimestamp():返回当前日期和时间 278<br/>A.3.24 makedate(year, day-of-year):时间组合天数 278<br/>A.3.25 maketime(hour, minute, second):时间组合 278<br/>A.3.26 microsecond(date):返回时间参数中的微秒数 278<br/>A.3.27 minute(t):返回指定时间中的分钟数 279<br/>A.3.28 monthname(d):返回日期中的月份名称 279<br/>A.3.29 month(d):返回日期中的月份值 279<br/>A.3.30 now():返回当前日期和时间 279<br/>A.3.31 period_add(period, number):日期加月份数 280<br/>A.3.32 period_diff(period1, period2):返回两个时间之间的月份差 280<br/>A.3.33 quarter(d):返回日期对应的季度数 280<br/>A.3.34 second(t):返回指定时间中的秒数 280<br/>A.3.35 sec_to_time(s):秒数转换为时间 281<br/>A.3.36 str_to_date(string, format_mask):把字符串转换为日期 281<br/>A.3.37 subdate(d,n):从指定日期减去指定天数后的日期 281<br/>A.3.38 subtime(t,n):从指定时间减去指定秒数后的时间 282<br/>A.3.39 sysdate():返回当前日期和时间 282<br/>A.3.40 time(expression):提取日期时间参数中的时间部分 282<br/>A.3.41 time_format(t,f):根据表达式显示时间 282<br/>A.3.42 time_to_sec(t):把时间转换为秒数 283<br/>A.3.43 timediff(time1, time2):计算时间差 283<br/>A.3.44 timestamp(expression, interval):指定时间加上时间间隔后的时间 283<br/>A.3.45 to_days(d):计算元年到当前日期的天数 283<br/>A.3.46 week(d):返回指定日期是本年的第几周 284<br/>A.3.47 weekday(d):返回指定日期是星期几 284<br/>A.3.48 year(d):返回指定日期的年份 284<br/>A.4 MySQL高级函数 285<br/>A.4.1 bin(x):返回字符串的二进制编码 285<br/>A.4.2 binary(s):将字符串转换为二进制数 285<br/>A.4.3 case expression:表达式分支 285<br/>A.4.4 cast(x as type):数据类型转换 286<br/>A.4.5 coalesce(expr1,(,exprn):返回第一个非空表达式 286<br/>A.4.6 connection_id():返回唯一连接ID 286<br/>A.4.7 conv(x,f1,f2):数据进制转换 287<br/>A.4.8 convert(s using cs):求字符串的字符集 287<br/>A.4.9 current_user():返回当前的用户名 287<br/>A.4.10 database():返回当前的数据库名 287<br/>A.4.11 if(expr,v1,v2):表达式判断 288<br/>A.4.12 ifnull(v1,v2):null替换 288<br/>A.4.13 isnull(expression):判断表达式是否为null 288<br/>A.4.14 nullif(expr1, expr2):字符串相等则返回null 289<br/>A.4.15 last_insert_id():返回最近生成的自增ID 289<br/>A.4.16 session_user():返回当前会话的用户名 290<br/>A.4.17 version():返回数据库的版本号 290

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网